如何让java等待用户输入?

时间:2013-02-04 00:24:10

标签: java

所以,我有一个循环,它使用扫描仪输入3个独立的用户输入,2个整数和一个字符串。 int正常工作,但String输入不起作用。它会跳过String的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);
        }
    }

1 个答案:

答案 0 :(得分:2)

来自java 7文档http://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html

  

public String nextLine()
  使此扫描器前进超过当前行并返回跳过的输入。此方法返回当前行的其余部分,不包括末尾的任何行分隔符。该位置设置为下一行的开头。

     

由于此方法继续搜索输入以查找行分隔符,因此如果没有行分隔符,它可以缓冲搜索要跳过的行的所有输入。

您可能想要使用:

  

public String next()
  查找并返回此扫描程序中的下一个完整令牌。在完成令牌之前和之后是与分隔符模式匹配的输入。即使之前的hasNext()调用返回true,此方法也可能在等待输入扫描时阻塞。