1

(code)という文字列変数を文字列の配列と比較するための最良の方法を見つけようとしているというジレンマがあります。それが等しい場合は、forループを中断したいと思います。どちらを選ぶべきでしょう。私は2番目のものはうまくいくと思いますが、1番目のものはそれがするようにそしてより簡単であるように見えます。何かアドバイスがあれば幸いです。

String[] badcodes = {"8QQ", "8BQ", "8JQ"};
if (code.equals(badcodes)) {
    break;
}

String[] badcodess = {"8QQ", "8BQ", "8JQ"};
for (String s : badcodess) {

    if (s.equals(code)) {
        break; // break out of for loop
    }
}

--------------回答に基づいて----------------------

  String[] badcodes = {"8QQ", "8BQ", "8JQ"};
    boolean check = Arrays.asList(badcodess).contains(code);
    if (check = true){
    // do something
    }else{
     do something
     }


  • つまり、配列内のいずれかの文字列がの値と等しい場合code? - Federico klez Culloca
  • "(code)という文字列変数を文字列の配列と比較します。" AStringaと等しくなることはありませんString[] - csmckelvey
  • はい、それは正しいです - Jonathan

2 답변


2

配列をListに変換してから使うことができますList::containsリストにコードが含まれているかどうかを確認します。

boolean check = Arrays.asList(badcodess).contains(code);


  • 上記のコードを書いて、if文を使いたいのですが、うまくいくでしょうか。真偽値をチェックして以来私はそれが真実か正しくないかどうかをチェックしている? - Jonathan
  • @Jonathanあなただけが使えるif (check){//do something}else{//do something else}使用する必要はありませんcheck = trueこれは代入であり、比較ではありません。checktrueと等しいか、そうでないか、double equalを使用する必要があります。 - YCF_L
  • だからあなたの言って私はcheck = trueを書く必要はありませんか? - Jonathan
  • ちょうど使用するif(check)それと同等if(check == true) - YCF_L
  • 大丈夫私はそれがコードが含まれているかどうかこれを行わないでくださいこれを行う= trueはそれがtrueと等しい場合はとにかく何かをするつもりだ...私はそれを得た - Jonathan

2

あなたの最初の選択肢はあなたが期待することをしないでしょう。そして場合でもsomeArray.equals(anotherArray)要素ごとの比較を行います(そうではありません) - 既存の配列のすべてのオブジェクトを特別な配列にまったく同じ順序で含める必要があります。その意味では、まずこのアプローチがさまざまな点で欠陥がある理由を理解してから、それをやめてください。

2番目の選択肢は問題ありませんが、あなたが本当に全体を「改善」したいのなら - 使用してくださいArrayListその代わりに - contains()方法。

リンクされた質問


関連する質問

最近の質問