3

由于无法调用 nextChar(),我不确定我应该如何读取可能是 2 个整数(由空格分隔)或字符的输入。帮助?

4

3 回答 3

3

首先,而不是if (next=="q") 用来if (next.equals("q"))比较字符串。请注意,即使"q"是单个字符,它仍然是一个String对象。您可以使用next.charAt(0)来获取char 'q',然后,您确实可以使用next == 'q'.

此外,不要next()使用 use nextLine(),如果用户没有键入"q",请拆分行以获取两个整数。否则,如果您调用next()了两次,然后只输入"q",您将永远不会退出程序,因为扫描仪将等待用户输入内容以从第二次返回next()

String next = keyboard.nextLine();
if (next.equals("q")) {
  System.out.println("You are a quitter. Goodbye.");
}
else {
  String[] pair = next.split(" ");
  int r = Integer.valueOf(pair[0]);
  int c = Integer.valueOf(pair[1]);
  System.out.printf("%d %d\n", r, c);
}
于 2012-09-07T22:04:27.733 回答
2

你必须next.equals("q")改用。==通常应仅用于基元。尝试这个:

Scanner keyboard = new Scanner(System.in);
System.out.print("Enter a coordinate [row col] or press [q] to quit: ");
String next = keyboard.nextLine();

if (next.equals("q")){  // You can also use equalsIgnoreCase("q") to allow for both "q" and "Q".
    System.out.println("You are a quitter. Goodbye.");
    isRunning=false;
}
else {
    String[] input = next.split(" ");
    // if (input.length != 2) do_something (optional of course)
    int r = Integer.parseInt(pair[0]);
    int c = Integer.parseInt(pair[1]);
    // possibly catch NumberFormatException...
}
于 2012-09-07T22:01:09.847 回答
2

字符串比较应该是

"q".equals(next)

==比较是否指向同一个对象的两个引用。一般用于基元比较。

.equals()比较值对象必须确定相等。

于 2012-09-07T22:01:48.103 回答