0

基本的にこれは私が持っているものです:

if(field1.getText().equals("")){
        label2.setForeground(Color.red);
        label2.setText("Please enter a pet type");
    }
    else if(field1.getText().equals(petList.get(z)){
        label2.setForeground(Color.red);
        label2.setText("The pet type already exists");
    }
    else{
        label2.setForeground(Color.red);
        label2.setText("Pet Type Added");
    String input = field1.getText();
    petList.add(j,input);
    j++;
    }

私がする必要があるのは、field1 をチェックして、それがベクトル petList 内のいずれかの要素と等しいかどうかを確認することです。どうすればこれを達成できますか? このように if ループの外側で for ループを使用しようとしましたfor(int z = 0; z < petList.size(); z++){が、配列インデックスが範囲外のエラーを返しました。どんな助けでも素晴らしいでしょう!今と同じ基本構造を使ってやりたいのですが、それができなくても構いません。このコードは、ボタンリスナー クラスの中にあります。

4

4 に答える 4

1

Vector の contains メソッドを見ましたか。petList.contains(field1.getText())

于 2013-02-13T08:00:36.117 に答える
0

解決策を明らかにせずに (したがって、スキルを開発する機会を与えないでください)、ここにヒントがあります!

for-each ループを使用できます。

http://docs.oracle.com/javase/1.5.0/docs/guide/language/foreach.html

そして、反復ごとに、配列内の現在の位置にある要素がユーザーの入力と等しいかどうかを確認します。

幸運を!

于 2013-02-13T07:57:46.190 に答える
0

これを交換

if(field1.getText().equals(""))

if (contains(vect, field1.getText()))

そして、次のメソッドを置きます:

private static boolean contains(Vector v, String s) {
     for (int i = 0; i < v.size(); ++i) {
         if (s.equals((String) v.elementAt(i))) {
            return true;
         }
     }
     return false;
}
于 2013-02-13T08:02:46.783 に答える
0

私の推測が正しければ、行で配列インデックスが範囲外のエラーを取得しています petList.add(j,input);インデックスを指定する代わりに、 for ループの後にこの入力を追加しないのはなぜですかpetList.add(input);

于 2013-02-13T08:02:59.420 に答える