3

初心者なので質問が的外れでしたらすみません。

私は次のコードを書きました:

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() が存在することさえ知らなかった。

4

3 に答える 3

13

コードには 2 つの問題があります。Java 文字列を比較するために を使用する必要があり、式equalsを作成するために比較を繰り返し使用する必要があります。||

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)) {
    ...
}

これは、ideone でのこの後のアプローチのデモです

于 2013-08-07T19:47:12.820 に答える
9
 if(t_city == "Judenburg" || "Knittelfeld" || "Zeltweg" || "Leoben" ||...

2 つの問題:

1)比較equals()に使用String

"Judenburg".equals(t_city)

2) コードは次のようになります。

if("Judenburg".equals(t_city) || "Knittelfeld".equals(t_city) ......

于 2013-08-07T19:47:11.703 に答える
3

( ||or) 演算子は、2 つのブール式を結合してブール値を返します。あなたが書くとき:

t_city == "Judenburg" || "Knittelfeld"

の左側はブール値に正しく評価される||式ですt_city == "Judenburg"が、右側は"Knittelfeld"ブール値ではなく文字列です!

あなたはこれを書くべきです:

(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")代わりに。

于 2013-08-07T19:49:27.113 に答える