否则,如果循环如何阻止用户输入任何内容但是真或假?

时间:2017-11-21 23:16:48

标签: java arrays if-statement

所以我添加了一个捕获我现在看不到任何错误但是当我运行程序时它重复不正确的输入请再试一次!输入错误请再试一次!输入错误请再试一次!直到我关闭程序。我出错了什么想法?

do {
  try {
    boolean updown = sc.nextBoolean();
    if (updown == true) {
      grid[x + 1][y] = 'S';
      grid[x + 2][y] = 'S';
      grid[x + 3][y] = 'S';
      grid[x + 4][y] = 'S';
      drawGrid(grid);
    } else if (updown == false) {
      grid[x][y + 1] = 'S';
      grid[x][y + 2] = 'S';
      grid[x][y + 3] = 'S';
      grid[x][y + 4] = 'S';
      drawGrid(grid);
      retry = 2;
    }
  } catch (Exception e) {
    System.out.println("Incorrect input please try again!");
  }
} while (retry == 1);

3 个答案:

答案 0 :(得分:0)

boolean只有两种可能的状态,只能 truefalse;没有第三国。您还可以组合多个分配,只需要elsedrawGrid可以是 common 。如果您担心无效输入,可以catch InputMismatchException或检查Scanner是否有boolean。或两者。像,

Scanner sc = new Scanner(System.in);
try {
    while (!sc.hasNextBoolean()) {
        if (!sc.hasNextLine()) {
            System.err.println("no input");
            System.exit(1);
        }
        System.err.println("Not a boolean, try again: " + sc.nextLine());
    }
    boolean updown = sc.nextBoolean();
    if (updown) {
        grid[x + 1][y] = grid[x + 2][y] = grid[x + 3][y] = grid[x + 4][y] = 'S';
    } else {
        grid[x][y + 1] = grid[x][y + 2] = grid[x][y + 3] = grid[x][y + 4] = 'S';
    }
    drawGrid(grid);
} catch (InputMismatchException ime) {
    System.err.println("Expected true or false.");
    System.err.println(ime.getMessage());
    ime.printStackTrace(System.err);
}

答案 1 :(得分:0)

嗯,也有许多麻烦,但你可以这样做:

}
        else if (!sc.hasNextBoolean()) {    (user needs to get error message 
                System.out.println("Error , input is not boolean value");
                return;
}
            if (updown == true) {
            grid[x+1][y] = 'S';
            grid[x+2][y] = 'S';
            grid[x+3][y] = 'S';
            grid[x+4][y] = 'S';
            drawGrid(grid);
            }

答案 2 :(得分:0)

如果我理解你的问题,你想要一种方法来确定用户输入是否是一个有效的布尔值。

如何确定用户输入是否为布尔值

Scanner类有一个内置方法:Scanner#hasNextBoolean()。在示例代码中,只需调用

即可
sc.hasNextBoolean();

如果返回true,则用户输入是有效的布尔值(truefalse)。如果它返回false,则用户输入是其他内容。