我正在尝试编译这段代码,但我的编译器(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
}
}
非常感谢你的帮助
答案 0 :(得分:8)
你不能这样做。 ||
运算符需要两个布尔操作数,而你的是字符串。你必须分别检查每个相等:
if (answer.equals("Bob") || answer.equals("Charlie Sheen")) {
}
一些旁注:
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))