-2

我有两个字符串数组,它们的数据几乎相同,但我想做的是一个一个比较值,因为它们的长度不同。这是我的代码,但如您所见,它效率不高。

String arrayIdent[] = {"abanico","camboya","retrato","ovalado"};

String arrayDatos[] = {"camboya","retrato","ovalado","granizo","riachuelo"};

for(int k = 0; k < Constantes.arrayDatos.length; k++)
{
       if(arrayIdent[k].equals(arrayDatos[k]))
            System.out.println(arrayIdent[k] + " equal " + arrayDatos[k]);
       else
            System.out.println(arrayIdent[k] + " is not equal to " + arrayDatos[k]);
}

我可以帮助解决问题。

4

3 回答 3

1

查看这两个列表,我猜您希望“camboya”、“retrato”和“ovalado”在某个时候显示为相等,因为您说的是逐个搜索。

如果是这种情况,您需要使用嵌套在第一个 for 循环中的第二个 for 循环来比较所有元素。

for (int i = 0; i < arrayDatos.length; i++){
    for (int k = 0; k < arrayIdent.length; k++){
        if(arrayIdent[k].equals(arrayDatos[i]))
            System.out.println(arrayIdent[k] + " equal " + arrayDatos[i]);
    }
}
于 2013-09-05T18:32:23.450 回答
0

您想逐个元素地比较第 k 个位置的元素,还是将一个元素与其他元素进行比较?如果一对一,那么源代码:

String arrayIdent[] = { "abanico", "camboya", "retrato", "ovalado" };
String arrayDatos[] = { "camboya", "retrato", "ovalado", "granizo", "riachuelo" };

boolean found;    
for (int k = 0; k < arrayIdent.length; k++)
{
   found = false;
   for (int j = 0; j < arrayDatos.length; j++)
      if(arrayIdent[k].equals(arrayDatos[j]))
      {
         System.out.println(arrayIdent[k] + " is equal to " + arrayDatos[j]);
         found = true;
      }
   if (!found)
      System.out.println(arrayIdent[k] + " is not equal to any element");
}

如果你想比较整个数组,那么equal()方法也适用于不同的长度。

于 2013-09-05T18:32:12.993 回答
0

正如有人提到的,arrayDatos比 长arrayIndent。这将引发ArrayIndexOutOfBounds异常。您的方法非常有效,但您可能希望将循环编写为:

for (int k=0; k<Math.min(Constantes.arrayDatos.length, Constantes.arrayIndent.length); k++)
于 2013-09-05T18:21:43.180 回答