我是初学者,如果问题很愚蠢,那就很抱歉。
我写了以下代码:
public class Traindata {
String City;
public Traindata(String t_city) {
if(t_city == "Judenburg" || "Knittelfeld" || "Zeltweg" || "Leoben" || "Bruck/Mur" || "Kapfenberg") {
City = t_city;
} else {
System.out.println("City not allowed: " + t_city + "\n");
}
我要做的是检查t_city是否与其中一个允许的城市(Judenburg,Knittelfeld,Zeltweg,Leoben)相同。
但是当我尝试编译代码时,我收到此错误消息: “错误:二元运算符的错误操作数类型'|'”
任何人都可以帮助我吗?我想我用的是“||”错了,但我无法让它发挥作用。
E:谢谢大家,我甚至不知道equals()存在。
答案 0 :(得分:13)
您的代码中存在两个问题:您需要使用equals
来比较Java字符串,并且需要重复使用比较来构造||
表达式:
if(t_city.equals("Judenburg") || t_city.equals("Knittelfeld") ... )
更好的是,构建一个您希望匹配的HashSet<String>
个城市,并使用contains
方法检查条件:
Set<String> cities = new HashSet<String>(Arrays.asList(
"Judenburg", "Knittelfeld", "Zeltweg", "Leoben", "Bruck/Mur", "Kapfenberg"
));
...
if (cities.contains(t_city)) {
...
}
答案 1 :(得分:9)
if(t_city == "Judenburg" || "Knittelfeld" || "Zeltweg" || "Leoben" ||...
两个问题:
1)使用equals()
进行String
比较
"Judenburg".equals(t_city)
2)您的代码应如下所示:
if("Judenburg".equals(t_city) || "Knittelfeld".equals(t_city) ......
答案 2 :(得分:3)
||
(或)运算符连接两个布尔表达式并返回一个布尔值。当你写:
t_city == "Judenburg" || "Knittelfeld"
||
的左侧是表达式t_city == "Judenburg"
,它正确地计算为布尔值,但右侧是"Knittelfeld"
,它不是布尔值,而是字符串!< / p>
你应该这样写:
(t_city == "Judenburg") || (t_city == "Knittelfeld") || (t_city == "Zeltweg") || (t_city == "Leoben") || (t_city == "Bruck/Mur") || (t_city == "Kapfenberg")
这样,括号内的每个表达式都是一个布尔表达式。
编辑:您还应该更改比较字符串的方式。 t_city == "Judenburg"
比较指针,这不是你想要的。使用:t_city.equals("Judenburg")
代替。