运营商|| 或者 不能使用

我试图让这个代码编译,但我的编译器(BlueJ)告诉我|| 不能应用于java.lang.string.java.lang.string

import java.io.*; import javax.swing.JOptionPane; class Hi { public static void main (String [] args){ String Answer; Answer = JOptionPane.showInputDialog("Who is a troll?"); if (Answer.equals ("null")) { JOptionPane.showMessageDialog(null, "You forgot to enter an answer before pressing 'ok'."); } else if (Answer.equals("Bob" || "Bob" || "Charlie Sheen")) { JOptionPane.showMessageDialog(null, "Your answer is incorrect."); } else JOptionPane.showMessageDialog(null, "Yes, " + Answer + ", is definitely a douchebag."); System.exit(0); // not needed to run } } 

谢谢你的帮助

你不能这样做。 || operator需要两个布尔操作数,而你的是字符串。 你必须分别检查每个相等:

 if (answer.equals("Bob") || answer.equals("Charlie Sheen")) { } 

一些旁注:

  • 变量名应为小写(按惯例)。
  • 你不应该提供两次相同的字符串(“Bob”)。
  • null"null" 。 你应该比较answer == null 。 如果您尝试在null对象上调用.equals(..) ,则会出现exception

尝试

if (Answer.equals("Bob") || Answer.equals("Charle") {}

正如Bozho指出的那样,请遵守Java编码约定的命名约定部分中描述的java编码标准。

您不能将逻辑OR运算符应用于String操作数。

尝试:

 if (Answer.equals("Bob") || Answer.equals("Charlie Shee")) 

之前的答案将有效。

 if (Answer.equals("Bob") || Answer.equals("Charlie Shee")) 

但是最好采取像这样的写作的好习惯:

 if ("Bob".equals(Answer) || "Charlie Shee".equals(Answer)) 

如果Answer变为null,则避免最终崩溃。

正如其他人指出的那样:这不会起作用,因为它不是equals的有效语法。 一个不那么冗长的解决方案可能是:

 if (Arrays.asList("Bob", "Bob", "Charlie Sheen").contains(Answer))