0

Нужно Считать 10 строк и заполнить ими массив strings. Удалить повторяющиеся строки из массива strings, заменив их на null (null должны быть не строками "null").

Выдает ошибку NullPointerException. Ругается на следующие строчки

  • strings[j] = null;
  • clone = null;

Не могу понять почему

import java.util.Arrays;
import java.util.Scanner;

public class Solution { public static String[] strings;

public static void main(String[] args) { Scanner scanner = new Scanner(System.in);

strings = new String[10];
for (int i = 0; i < 10; i++) {
    strings[i] = scanner.nextLine();
}

for(int i = 0;i < 10;i++){
    String clone =  strings[i];
    for(int j = 0;j < 10; j++){
        if(i == j){
            continue;
        } else {
            if(strings[i].equals(strings[j])){
              strings[j] = null;  
              clone = null;
            } else {
              continue;  
            }
        }
    }
    strings[i] = clone;
}
Arrays.stream(strings).forEach(System.out::println);

} }

1 Answers1

0

Ошибка возникает в другой строчке, а именно в if(strings[i].equals(strings[j])) в тот момент, когда в strings[j] уже лежит null. Метод String.equals() с null не работает. Можно использовать, например, String.isEmpty(). Или сравнить прямо через if (str == null). Еще можно ловить это исключение через try..catch.