2

私はこのコードを持っています:

int i;
for (i = 0; i < 13; ++i) {
    if (hand[i].charAt(0) == 'A' || 'B' && hand[i].charAt(1) == 'C') 
        System.out.println(hand[i]);
        }

基本的に私がこれをしたいのは、各配列要素のインデックス 0 の文字が A または B であり、かつ各配列要素の 2 番目のインデックスの文字が C である場合、それらの要素を印刷することです。1 文字で動作しますが、最初の部分に or を入れると、「2 項演算子 '&&' のオペランドの型が正しくありません」というエラーが表示されます。この問題を解決するにはどうすればよいですか?

ありがとうございました。

4

5 に答える 5

5

あなたは書くことができません

hand[i].charAt(0) == 'A' || 'B'

おそらくあなたは書くつもりだった

hand[i].charAt(0) == 'A' || hand[i].charAt(0) == 'B'

ところであなたは書くことができます

"AB".indexOf(hand[i].charAt(0)) >= 0

このようにして、必要に応じてさらに多くの文字を追加できます。

ただし、全体を記述する最も明確な方法は、

if (hand[i].startsWith("AC") || hand[i].startsWith("BC"))
于 2013-09-23T23:39:26.560 に答える
2

あなたの問題は次のとおりです。

hand[i].charAt(0) == 'A' || 'B'

論理 OR は、あなたが思っているようには機能しません。使用する:

hand[i].charAt(0) == 'A' || hand[i].charAt(0) == 'B'
于 2013-09-23T23:39:10.460 に答える
1

構文。各ブール演算子 ( ||&&など) は、ブール値でのみ機能します。int はなく (C のように)、文字もありません。

if (hand[i].charAt(0) == 'A' || 'B' && hand[i].charAt(1) == 'C')

する必要があります

if ((hand[i].charAt(0) == 'A' || hand[i].charAt(0) == 'B') && hand[i].charAt(1) == 'C')
于 2013-09-23T23:39:02.477 に答える
1

||演算子 (and )は、値ではなく、値に対して&&のみ機能します。これが意味することは、各比較を各文字で明示的に記述する必要があるということです。booleanchar

変化する:

hand[i].charAt(0) == 'A' || 'B'

(hand[i].charAt(0) == 'A' || hand[i].charAt(0) == 'B')

「または」条件は括弧で囲まれているため、 の前に評価され&&ます。これは、あなたが意図したものだと思います。

于 2013-09-23T23:39:21.447 に答える
1

ブール値の比較に使用されるため、ブール値ではなく char を渡しています。

if (hand[i].charAt(0) == 'A' || hand[i].charAt(0) == 'B' && hand[i].charAt(1) == 'C') 
        System.out.println(hand[i]);
        }
于 2013-09-23T23:39:22.813 に答える