2013-03-01 101 views
1

我从扫描仪读取输入,这我则比较硬编码字符串变量的Java:从scanner.next字符串()和.equals()比较失败

String MOVE = input.next(); // I type in "MOVE N" 
MOVE = MOVE.trim(); 
System.out.print(MOVE.equals("MOVE N")); 

这返回false。我加了trim()

String MOVE = input.next(); // I type in "MOVE N" 
System.out.print(MOVE.equals("MOVE N")); 

仍然是假的。

任何想法?谢谢

+1

'System.out.println(''“+ MOVE +”'“)''的输出是什么? – 2013-03-01 13:31:26

+1

你有没有调试你的代码? – ogzd 2013-03-01 13:31:59

回答

11

你可能想要nextLine()next()方法将只返回下一个令牌,默认情况下它将是下一个单词(即它在空格处断开)。

下一次,您应该添加一个致电System.out.println(MOVE);来帮助您诊断 - 这样您可以看到结果只是"MOVE"而不是"MOVE N"。 (然后你会参考Scanner.next()的文档...)

此外,我强烈建议你开始遵循你的变量的Java命名约定 - 例如move而不是MOVE

+1

+1马恩,那是超级快.. :) – PermGenError 2013-03-01 13:31:48

+0

扫描仪的问题已成为一个正规的党 – user1428716 2013-03-01 13:34:48

+0

谢谢,nextLine()的作品。不要担心命名约定,我会遵循它们,这是为了举例而过于简化 – njl 2013-03-01 13:36:25

0
String MOVE = input.nextLine(); // I type in "MOVE N" 
MOVE = MOVE.trim(); 
System.out.print (MOVE.equals ("MOVE N"));