Java - OR / AND 字符 (|| &&) 在 if 语句中非法



我正在使用扫描仪编写一个简单的程序,现在想通过将输入与这些单词进行比较来确保用户只键入"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'分配到一个不间断的空间,所以问题可能不是管道。尝试消除管道周围的空间,并将否定的语句括在括号中,看看错误是否仍然存在。

最新更新