1

これは私の最初の投稿であり、私は Java の初心者です。

私は Java でテキストベースのアドベンチャー ゲームを書いていますが、コードの 1 か所 (パーサー) で失敗しました。エラーはありません。動作しません。入力を受け取りますが、それについては何もしません。これは非常に単純で、次のようになります。

public static void getInput(){
    System.out.print(">>"); //print cue for input
    String i = scan.nextLine(); //get (i)nput
    String[] w = i.split(" "); //split input into (w)ords
    List words = Arrays.asList(w); //change to list format
    test(words);
}

テスト メソッドは、 を使用してリストから特定の単語を検索するだけif(words.contains("<word>"))です。

コードの何が問題で、どうすれば改善できますか?

4

2 に答える 2

1

配列を保持し、次のようなものを使用するのはどうですか:

    String[] word_list = {"This","is","an","Array"}; //An Array in your fault its 'w'
for (int i = 0;i < word_list.length;i++) { //Running trough all Elements 
    System.out.println(word_list[i]);
            if (word_list[i].equalsIgnoreCase("This")) {
        System.out.println("This found!");
    }
    if (word_list[i].equalsIgnoreCase("is")) {
        System.out.println("is found!");
    }
    if (word_list[i].equalsIgnoreCase("an")) {
        System.out.println("an found!");
    }
    if (word_list[i].equalsIgnoreCase("Array")) {
        System.out.println("Array found!");
    }
    if (word_list[i].equalsIgnoreCase("NotExistant")) { //Wont be found
        System.out.println("NotExistant found!"); 
    }
}

次の出力が得られます。

This found!
is found!
an found!
Array found!

ご覧のとおり、リストに変換する必要はまったくありません。

于 2013-02-20T14:12:32.230 に答える
0

これを行う方法は次のとおりです。

public class ReadInput {
    private static void processInput (List <String> words)
    {
        if (words.contains ("foo"))
            System.out.println ("Foo!");
        else if (words.contains ("bar"))
            System.out.println ("Bar!");
    }

    public static void readInput () throws Exception
    {
        BufferedReader reader = 
            new BufferedReader (
                new InputStreamReader (System.in));

        String line;
        while ((line = reader.readLine ()) != null)
        {
            String [] words = line.split (" ");
            processInput (Arrays.asList (words));
        }
    }

    public static void main (String [] args) throws Exception 
    {
        readInput ();
    }
}

サンプル セッション:

[in]  hello world
[in]  foo bar
[out] Foo!
[in]  foobar bar foobar
[out] Bar!
于 2013-02-20T14:11:25.547 に答える