-1

したがって、スキャナーを使用して3つの個別のユーザー入力、2つのint、および1つの文字列を入力するループがあります。intは問題なく機能しますが、文字列入力は機能しません。文字列のiputをスキップし、ループしてintを再度要求します。

for(int e = 10; e > 5; e++)
    {
        System.out.println("Enter the Y coordinate of your guess. The upper left corner is 0, and the lower left is 7");
        int guessY = inputDevice.nextInt();
        System.out.println("Enter the X coordinate of your guess. The upper left corner is 0, and the upper right is 7");
        int guessX = inputDevice.nextInt();

        display[guessX][guessY] = map[guessX][guessY];
        for(int j = 0; j < 8; j++)

                {

            for(int t = 0; t < 8; t++)

            {

                System.out.print(display[j][t] + " ");

            }

            System.out.println();

        }


        System.out.println("Enter go when you are ready to make another move.");
        System.out.println("Enter quit to give up");
        String cont = inputDevice.nextLine();

        if(cont.equalsIgnoreCase("quit"))
        {
            System.out.println("Weenie.");
            System.exit(0);
        } else if(cont.equalsIgnoreCase("go")) {
            for(int i = 0; i < 100; i++)
                System.out.println("\b");
        }

        if(map[guessX][guessY] == '0')
        {
            if(map[guessX - 1][guessY - 1] == '0')
                display[guessX - 1][guessY - 1] = map[guessX - 1][guessY - 1];
            if(map[guessX - 1][guessY + 0] == '0')
                display[guessX - 1][guessY + 0] = map[guessX - 1][guessY + 0];
            if(map[guessX - 1][guessY + 1] == '0')
                display[guessX - 1][guessY + 1] = map[guessX - 1][guessY + 1];
            if(map[guessX + 0][guessY - 1] == '0')
                display[guessX + 0][guessY - 1] = map[guessX + 0][guessY - 1];
            if(map[guessX + 0][guessY + 1] == '0')
                display[guessX + 0][guessY + 1] = map[guessX + 0][guessY + 1];
            if(map[guessX + 1][guessY - 1] == '0')
                display[guessX + 1][guessY - 1] = map[guessX + 1][guessY - 1];
            if(map[guessX + 1][guessY + 0] == '0')
                display[guessX + 1][guessY + 0] = map[guessX + 1][guessY + 0];
            if(map[guessX + 1][guessY + 1] == '0')
                display[guessX + 1][guessY + 1] = map[guessX + 1][guessY + 1];
        }
        if(display[guessX][guessY] == 'M')
        {
            System.out.println("You hit a mine");
            System.out.println("Game over.");
            System.exit(0);
        }
    }
4

1 に答える 1

2

java 7のドキュメントからhttp://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html

public String nextLine()
このスキャナーを現在の行を超えて進め、スキップされた入力を返します。このメソッドは、最後の行区切り記号を除いて、現在の行の残りを返します。位置は次の行の先頭に設定されます。

このメソッドは、行区切り文字を探して入力を検索し続けるため、行区切り記号が存在しない場合は、スキップする行を検索するすべての入力をバッファリングする場合があります。

あなたはおそらく使用したかった:

public String next()
このスキャナーから次の完全なトークンを検索して返します。完全なトークンの前後には、区切り文字パターンに一致する入力があります。このメソッドは、hasNext()の前回の呼び出しがtrueを返した場合でも、入力がスキャンされるのを待っている間にブロックされる可能性があります。

于 2013-02-04T02:00:42.877 に答える