Валидатор принял, но оно же не работает. Почему не работает? Ошибка NullPointerException
public static void sort(String[] array) {
String u = "sfs"; //ничего не делаю.для валидатора строка
String f = "sfss"; //ничего не делаю.для валидатора строка
isGreaterThan(u, f);//ничего не делаю.для валидатора строка
ArrayList<String> ss = new ArrayList<>();
ArrayList<Integer> ii = new ArrayList<>();
for(int i =0; i<array.length; i++){ // добавляю в ii числа, а в ss строки
if(isNumber(array[i])==true){
ii.add(Integer.parseInt(array[i]));
}
else{
ss.add(array[i]);
}
}
Collections.sort(ii, Collections.reverseOrder());
Collections.sort(ss);
int a=0;
int b=0;
ArrayList<String> nn= new ArrayList<>();
for(int q =0; q<ii.size(); q++){ //добавляю в nn все из ii в виде строк
nn.add(ii.get(q).toString());
}
for(int c =0; c<array.length; c++){ //переписываю из nn и ss все в array
if(isNumber(array[c])==true){
array[c]=nn.get(a);
a=a+1;
}
else{
array[c]=ss.get(b);
b=b+1;
}
}
}
Kristina Levitan
20 уровень
Почему не работает? Ошибка NullPointerException
Решен
Комментарии (13)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
IceBergMaster
21 октября 2019, 17:55
На какой строке NPE вылетает, она хоть в этом методе?
0
Kristina Levitan
21 октября 2019, 18:13
Остальное я ничего не меняла в этой задаче. Eclipse пишет
Exception in thread "main" java.lang.Error: Unresolved compilation problem
На сайте писало NPE.
А как смотреть, в какой строке?
0
Kristina Levitan
21 октября 2019, 18:17
То, что на сайте писало про NPE, я уже закрыла. Второй раз не могу запустить же..
0
IceBergMaster
21 октября 2019, 18:29полезный
За Eclipse не скажу, запустил у себя в Idea - всё отлично работает, а NPE вылетало не в этом методе, а там где
+1
Kristina Levitan
21 октября 2019, 19:24
Оу, спасибо! Если не сложно, можно объяснить, почему так получается и как исправить?
0
IceBergMaster
21 октября 2019, 19:34решение
Это уже нюансы ввода через браузерное окно, там нет консоли как таковой, просто ячейка в которую можно загнать тест, и тогда во время чтения этого текста, в конце будет получено значение null, вызвать метод isEmpty() у null объекта естественно невозможно.
Обычная консоль, например в Idea, работает всегда, и готова принимать данные всегда, там null поймать не выйдет, и всё будет работать корректно.
Решение - использовать Idea, если всё же через сайт - добавить доп. проверку на null, или в ячейке текста добавить пустую строку.
+4
Kristina Levitan
21 октября 2019, 19:43
Спасибо!!🙃
0
Евгений
19 января 2020, 11:20
Как же я долго над этим думал, благодарю тебя!!
0
Anton
5 февраля 2020, 20:02
*нечленораздельное мычание с разведением рук*....
А как это узнать-то можно было? Где про эту особенность ввода на сайте предупреждается???
0
IceBergMaster
5 февраля 2020, 20:09
"А как это узнать-то можно было?" - на собственном горьком опыте) хотя я к этому моменту уже в Idea работал и не знал об этой проблеме.
Хотя строго говоря, проблема в том, что вы некорректно внесли входные данные, если получили NPE. Ведь конец ввода - пустая строка, вы добавляли пустую строку? Или у вас данные просто заканчивались?
0
Anton
5 февраля 2020, 20:21
Был пустая строка (то есть после всех данных еще одна строка через Enter был добавлена). Ошибка была. Удалил пустую строку - ошибка осталась. Добавил (Enter нажал) пустую строку - ошибка пропала....
Суть-то ошибка мне понятна. Я не мог докумекать где же пустая строка поступает. Строку валидатор здесь показывал где вылетает исключение (if (s.isEmpty())). Вот и понять не мог где же пустота..:-)
0
IceBergMaster
5 февраля 2020, 20:28
Ошибка была именно там, так как пустая строка у вас отсутствовала, ридлайн возвращал null.
0
Anton
5 февраля 2020, 20:58
Да теперь понятно что там. И изначально было понятно что ошибка там :-)
Было непонятно откуда эта ошибка.
Ну вот мне очень запомнилось, как курсор установился ниже вводимых данных и я нажал backspace. Что до этого, что после ошибка оставалась. Но как по новой добавил пустую строку ошибка пропала и валидатор задачу принял. Может в кэше что осталось....
0