Код простой, который говорит нам ,пока условие истинно. Мы считываем строку и тут же проверяем если строка пустая , то в лист мы ни чего не добавляем, НО! я ввожу строку не пустую и у меня появляется следующая ошибка: !!! Осуществлена попытка доступа к не инициализированному объекту (Null). и показывает на ошибку в строке if (s.isEmpty()) break; , почему она появляется ? Если строка не пустая!?
while (true) {
String s = reader.readLine();
if (s.isEmpty()) break;
list.add(s);
}
Причем такой вариант работает нормально :
while (true) {
String s = reader.readLine();
if (s == null) break;
list.add(s);
}
Но нам же надо что бы было все правильно и что бы память использовать по минимум и как мы знаем метод isEmpty() при сравнивании строки на пустоту использует минимум памяти, так что прошу помочь с моей проблемой package com.javarush.task.task07.task0727;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
/*
Меняем функциональность
*/
public class Solution {
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
ArrayList<String> list = new ArrayList<String>();
while (true) {
String s = reader.readLine();
if (s.isEmpty()) break;
list.add(s);
}
ArrayList<String> listUpperCase = new ArrayList<String>();
for (int i = 0; i < list.size(); i++) {
String s = list.get(i);
listUpperCase.add(s.toUpperCase());
}
for (int i = 0; i < listUpperCase.size(); i++) {
System.out.println(listUpperCase.get(i));
}
}
}