2015-10-26 4 views
0

Мне нужно ввести произвольное количество чисел от 0 до 500, как только возвращение будет пустой строкой, мне нужно выйти из цикла и выполнить некоторые вычисления с входами. Вот мой код до сих пор:Выход из цикла, используя нуль

String test = ""; 

while(test != null){ 
    String[] inputs = br.readLine().split("\\s+"); 
    inputs[0] = test; 

    if (test != null){ 
     inputs2[i] = Integer.parseInt(inputs[0]); 
     StatsPackage.inputs[i] = Integer.parseInt(inputs[0]); 
    } 
    i++; 
}//end of while loop 

Здесь ошибка я получаю:

Exception in thread "main" java.lang.NumberFormatException: For input string: "" 

at java.lang.NumberFormatException.forInputString(Unknown Source) 

at java.lang.Integer.parseInt(Unknown Source) 

at java.lang.Integer.parseInt(Unknown Source) 

at StatsPackage.main(StatsPackage.java:84) 

Line 84 заключается в следующем:

inputs2[i] = Integer.parseInt(inputs[0]); 

какие-либо идеи?

+0

'Integer.parseInt (" ");' это то, что вы делаете, вы всегда получите исключение для этого, потому что 'test' никогда не менялся – silentprogrammer

+2

Check [Разница между пустой и пустой (" ") строкой Java] (http: //stackoverflow.com/questions/4802015/difference-between-null-and-empty-java-string) – sam

+1

Я хотел бы понять цель вашего кода, поскольку тот факт, что вы не понимали разницы между ' empty' и 'null', плюс использование переменной' input2', заставляет меня думать, что есть намного лучшие варианты дизайна, которые вы все еще не знаете как новичок (?), и это сделает ваш код намного лучше. – XenoRo

ответ

-2

Вы можете проверить, если строка не пуста, добавив:

String test = ""; 

while(test != null && !test.isEmpty()){ 
String[] inputs = br.readLine().split("\\s+"); 
inputs[0] = test; 

if (test != null){ 
    inputs2[i] = Integer.parseInt(inputs[0]); 
    StatsPackage.inputs[i] = Integer.parseInt(inputs[0]); 
} 
i++; 
}//end of while loop 
+0

Очень очевидная проблема с условным условным циклом и начальным состоянием переменной test. – XenoRo

-2

Просто попробуйте следующее сравнение в коде:

(test != null || !(test.equals(""))) 

В этом случае, вы избегаете NULL ссылки и пустые строки ("").

Надеюсь, что этот ответ будет полезен!

+0

Проверка на пустое значение не обязательно должна быть завернута во вторую скобку, и было бы лучше использовать 'String.isEmpty()' вместо этого. Кроме того, на самом деле это не отвечает на то, что не так с его кодом, и явно не учит чему-либо. Я не хочу отговаривать вас; но вы предлагаете решение здесь, а не ответ. – XenoRo

+0

С уважением, я говорю: он просит любую идею решить проблему, так что это решение. Я только пытался предоставить решение многих, которые могут быть возможны в этом случае. Кроме того, я согласен с вами в использовании {String.isEmpty()} –

Смежные вопросы