Comparando cadena (índice) [duplicado]

Jan 12 2021

cómo comparar dos matrices con índice exacto, por ejemplo

String[] test1 = {"a","b","c","d"};
String[] test2 = {"a","b","c",""};

Probé esto

for (int i = 0; i < test1.length; i++) {
for (int j =  i; j < test2.length; j++) if (i==j)  if (i == j && test2[j] == "" ) {do stuff}
} 

// but always give true

ahora, si la comparación comienza en el índice 0 para test1, debería compararse solo con el índice 0 para test2.Quiero encontrar el índice vacío (por ejemplo, el índice 3 para test2, que está relacionado con el índice 3 de test1) y hacer algunas cosas

Leo mucho pero tengo algunas dificultades, gracias de antemano.

Respuestas

Pieter12345 Jan 12 2021 at 22:04

Por lo que tengo entendido, desea comparar dos matrices que podrían no ser del mismo tamaño y, si no lo son, ¿comparar solo con el tamaño más corto? Puedes hacer algo como esto:

boolean equals = true;
for(int i = 0; i < test1.length && i < test2.length; i++) {
    if(!test1[i].equals(test2[i])) {
        equals = false;
        break;
    }
}
Spectric Jan 12 2021 at 22:02

Úselo .equals()para comparar cadenas. ==se utiliza para comparar primitivas.

Tampoco hay necesidad de 2 bucles.

for(int i = 0; i < test1.length; i++){
    if(test1[i].equals("")||test2[i].equals(""){
        //Do something
    }
}
pabloespinosa12 Jan 12 2021 at 22:03

Cuando está comparando cadenas en Java, debe usar EQUALS ya que son objetos. Además, no tiene sentido utilizar dos bucles. Intenta esto:

for (int i = 0; i < test1.length; i++) {
    if (test2[i].equals("") ) {do stuff}
}
NehaK Jan 12 2021 at 22:52

Utilice deepEquals () de Arrays.java:

  import java.util.Arrays;

  String[][] s1 =
        {
            {"A", "B", "C"},
            {"X", "Y", "Z"}
        };
 
 String[][] s2 =
        {
            {"A", "B", "C"},
            {"X", "Y", "Z"}
        };
 
 System.out.println("deepEquals() returns " + Arrays.deepEquals(s1, s2));

Salida: deepEquals () devuelve verdadero