public static void main(String[] args) throws IOException {
//напишите тут ваш код
int c = 0, x = 0;
String snumber = null;// здесь вынужденная инициализация.
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String s = reader.readLine();
c = s.length();
for(int i = 0; i < c; i++) {
snumber += s.charAt(i);// если не инициализирую выше snumber, то подсветка красной линией, snumber в этой строке.
snumber = snumber.substring(4);// как следствие здесь вынужден обрезать строку от null.
...... и тд.
*********************************************************************************************
задачу я решил, но есть вопрос: как уйти от инициализации строки null в начале кода?
Maxim
20 уровень
Инициализация строки =null;
Решен
Комментарии (4)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
George Skrydlov
20 мая 2018, 15:15
Насколько я знаю, от инициализации локальных переменных (которые объявлены внутри метода) не избавиться никак.
Предложенный ниже вариант (String s = "";) также является инициализацией.
Можно не инициализировать переменные класса (поля экземпляра), т.к. они должны инициализироваться дефолтными значениями, но это не точно.
0
Maxim
20 мая 2018, 17:22
Спасибо за ответ. я не имел ввиду не вообще уйти. а уйти именно от null
0
Ярослав Java Developer Master
19 мая 2018, 23:33решение
String s = "";
А вообще, в такой ситуации нужно использовать StringBuilder, так как у тебя конкатенация в цикле. Вместо snumber пишешь:
StringBuilder builder = new StringBuilder(s.length); // это после String s = reader.readLine();
А в цикле пишешь:
builder.append(s.charAt(i));
Чтобы получить строку из билдера, достаточно вызвать builder.toString();
+2
Maxim
20 мая 2018, 10:46
Ярослав Спасибо за ответ.
Сижу смеюсь с себя. видно устал . String s = ""; это же Самое Очевидное.
из решения задачи сразу выпало 4 строки лишнего кода.
хотя плюс от null тоже был, прокачал себя методами String.)
а вот билдера в моих уровнях ещё не было. решаю только рассказанным материалом, но тоже Спасибо за подсказку.
0