由于无法调用 nextChar(),我不确定我应该如何读取可能是 2 个整数(由空格分隔)或字符的输入。帮助?
问问题
198 次
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 回答