Объясните код пожалуйста
Я не понял момент с "j+1" Зачем это но код без него не правильно работает не могу понят.
public class Solution {
public static String[] strings;
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
strings = new String[6];
for (int i = 0; i < 6; i++) {
strings[i] = scanner.nextLine();
}
for (int i = 0; i < strings.length; i++) {
String currentString = strings[i];
for (int j = i + 1; j < strings.length; j++) {
if (currentString == null) {
break;
}
if (currentString.equals(strings[j])) {
strings[j] = null;
strings[i] = null;
}
}
}
for (int i = 0; i < strings.length; i++) {
System.out.print(strings[i] + ", ");
}
}
}
Shaxzod
8 уровень
Помогите понять код
Обсуждается
Комментарии (5)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Maxim Zakaryan
17 марта 2022, 19:05
У тебя тут вложенный цикл с for (т.е. один for вложен во второй for).
В первом for ты фиксируешь i (например, пусть i = 0, что будет соответствовать первому слову в массиве).
А вторым for ты должен перебрать все последующие слова (перебирать все возможные элементы j) и сравнить их со словом, которое ты зафиксировал в пером for (в нашем примере,i = 0, т.е. самое первое слово).
Соответственно логично, что j не должно быть равно i, иначе ты сравниваешь слово с самим собой (а оно всегда равно само себе), что не правильно. Поэтому второй for и должен начинаться не с i-ого элемента, а со следующего (т.е. с j+1).
0
Shaxzod
18 марта 2022, 06:00
Вроде понял и не понял
Не могу уловить суть
0
HaivvathaПытаюсь переобуться в QA в Секрет
28 марта 2022, 06:51
Вот я это понял, но вместо i+1 я писал j = 1 и код работал неправильно. Он мне все элементы в массиве менял на null при таком написании.
0
Alex Java Developer
17 марта 2022, 17:55
Привет. i+1 потому как ты сравниваешь первый элемент со следующим.
0
hidden #598481
17 марта 2022, 18:43
Не со следующим, а со всеми, начиная со следующего.
+2