2016-09-13 8 views
-2

私はJavaが初めてです。配列に要素が含まれているかどうかを確認する方法?

私は(Array)のような配列を持っています。 (私はこれを印刷するためにArray.toStringを使いました)。これは配列の作成方法です:arraymade。 そして、これは、この形式のファイルから読み込まれ、構成されています。私は、オブジェクトの配列が含まれているものに応じて「VG」または「G」、「U」のいずれかを返すメソッドを作成しようとしている

Nilsson;Lars;u;g;vg;vg 
Svensson;Lena;vg;g;g;vg 
Jonsson;Jonas;g;g;vg;g 

@Override 
public String getKursbetyg() { 



    if (Arrays.asList(uppgiftsbetyg).contains("u")) { 
     kursbetyg = "u"; 
     return kursbetyg; 

    } else if (Arrays.asList(uppgiftsbetyg).contains("if the array contains 2 vg strings")) { 
     kursbetyg = "vg"; 
     return kursbetyg; 

    } else { 
     kursbetyg = "g"; 
     return kursbetyg; 
    } 

} 

これは私が今使っているコードですが、配列に "u"が含まれていても "g"しか返さないため動作しません。

また、グレードvgを取得するには2つのvg:sが必要なので、2つのvg:sが見つかった場合にのみメソッドがvgを返すようにします。だからここで二重要素をチェックするにはどうしたらいいですか?

+1

は1次元または2次元アレイですか? – Sanjeev

+1

配列の画像には、[u、g、vg]、[vg、g、g]、[g、g、vg]の3種類の配列が表示されます。あなたは、あなたがどこにいても、あなたがどこにいるかを見せてもらえますか? – Creperum

+0

私はどのように配列が作られた写真を追加しました。 – haverdaden

答えて

0

まず、要件を再考する必要があります。 1つのストリング(uのようなもの)の存在は、他のもの(2つのvgまたはgのようなもの)の不存在を排除するものではなく、また存在しないことも証明しない。あなたの投稿された例は、この点ですでに矛盾しています。

さらに、メソッドには変数kursbetygの宣言がありません。この「取得...」メソッドの副作用としてフィールドを変更していないことを本当に願っています。

あなたが最初に出現除くサブリストを検索することにより、2回出現ストレートフォワードを検索することができます。

public String getKursbetyg() { 
    List<String> list = Arrays.asList(uppgiftsbetyg); 
    if(list.contains("u")) { 
     return "u"; 
    } 
    int index=list.indexOf("vg"); 
    if(index>=0 && list.subList(index+1, list.size()).contains("vg")) { 
     return "vg"; 
    } 
    return "g"; 
} 

も単純に考えられるかもしれないあなたの元の構造に近いソリューションは、

public String getKursbetyg() { 
    List<String> list = Arrays.asList(uppgiftsbetyg); 
    if(list.contains("u")) { 
     return "u"; 
    } else if(Collections.frequency(list, "vg")>=2) { 
     return "vg"; 
    } else { 
     return "g"; 
    } 
} 
です

しかし、vgの出現を不必要に計数することによって、必要以上に多くの作業を行う可能性があります。2を超えてください。

関連する問題