运营商|| 或者 不能使用
我试图让这个代码编译,但我的编译器(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))
- 重新生成随机数。 Android的?
- 尝试编译实现接口的java文件时“找不到符号”
- RealmObjects中的自定义方法…解决方案?
- 无法找到类com.google.android.gms.common.kf.a引用的类’android.app.AppOpsManager’
- 如何从Android上的Camera选择的图像中获得正确的宽度和高度?
- Android – 解析RSS源时出现UnknownHostexception
- Android:如何将.mp3文件和图像上传到http服务器?
- 错误“由以下引起:java.lang.ClassNotFoundException:”
- 来自(其他问题)的行为是JVM规范中的错误还是预期的?