Сравнение строки (индекс) [дубликат]
как сравнить два массива с точным индексом например
String[] test1 = {"a","b","c","d"};
String[] test2 = {"a","b","c",""};
Я пробовал это
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
теперь, если сравнение начинается с индекса 0 для test1, его следует сравнивать только с индексом 0 для test2, я хочу найти пустой индекс (например, индекс 3 для test2, который связан с индексом 3 test1) и сделать некоторые вещи
Я много читаю, но у меня есть трудности, заранее спасибо.
Ответы
Насколько я понимаю, вы хотите сравнить два массива, которые могут быть не одинакового размера, а если они нет, то сравнивать только до самого короткого размера? Вы можете сделать что-то вроде этого:
boolean equals = true;
for(int i = 0; i < test1.length && i < test2.length; i++) {
if(!test1[i].equals(test2[i])) {
equals = false;
break;
}
}
Используйте .equals()
для сравнения строк. ==
используется для сравнения примитивов.
Также нет необходимости в 2 петлях.
for(int i = 0; i < test1.length; i++){
if(test1[i].equals("")||test2[i].equals(""){
//Do something
}
}
Когда вы сравниваете строки в Java, вы должны использовать EQUALS, поскольку они являются объектами. Также нет смысла на двух петлях. Просто попробуйте это:
for (int i = 0; i < test1.length; i++) {
if (test2[i].equals("") ) {do stuff}
}
Используйте deepEquals () из 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));
Вывод: deepEquals () возвращает true