我正在使用扫描仪编写一个简单的程序,现在想通过将输入与这些单词进行比较来确保用户只键入"yes"或"no"。我在||
(管道)中使用一个普通的if
-语句:
if (!input.equals("yes") || !input.equals("no")) {
//do something
}
Java(我使用的是BlueJ)抱怨我的管道,它说:"非法字符:'\u00a0'"
我尝试了什么
- 我复制了&从维基百科网站粘贴管道,以确保我真的使用了正确的管道字符
- 重新启动BlueJ
- 尝试使用等号(&&),出现相同错误
- 如果我去掉第二个条件和管道,它就会起作用
有人知道它为什么抱怨,以及我该如何解决它吗?–提前感谢
字符u00a0
是一个不间断的空格。
看起来你在代码中键入了一个控制字符,替换了这行的副本中的所有内容
if(!input.equals("yes") && !input.equals("no"))
或者简单地抑制行中的空格并重新键入它们(确保不要键入nbsp
)。
注意,我将||
更改为&&
,因为例如键入"no"仍然会输入条件,因为"yes"不等于输入。然后您的条件将是true || false
,这将导致true
。
无论如何,这与||
或&&
运算符无关,而是空格。
'\u00a0'分配到一个不间断的空间,所以问题可能不是管道。尝试消除管道周围的空间,并将否定的语句括在括号中,看看错误是否仍然存在。