运营商||或者不能使用

时间:2011-10-22 20:39:36

标签: java

我正在尝试编译这段代码,但我的编译器(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 

}
}

非常感谢你的帮助

5 个答案:

答案 0 :(得分:8)

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

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

一些旁注:

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

答案 1 :(得分:5)

尝试

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

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

答案 2 :(得分:3)

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

尝试:

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

答案 3 :(得分:1)

之前的答案将有效。

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

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

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

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

答案 4 :(得分:1)

正如其他人指出:这不起作用,因为它不是equals的有效语法。一个不太详细的解决方案可能是:

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