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 回答