Попробуйте ввести в свой проект библиотеку Apache "commons Lang", и для последней строки вы можете сделать
int aInt = 0;
if(StringUtils.isNotBlank(aString) && StringUtils.isNumeric(aString) ){
aInt = Integer.parseInt(aString);
}
редактировать: не уверен, почему понижение. JtextField примет любую строку. Если текстовое поле прослушивает каждое нажатие клавиши, каждое введенное нечисловое значение (включая пустое) будет генерировать исключение NumberFormatException. Лучше всего проверить, является ли оно числовым, прежде чем что-либо делать с новым значением.
edit2: Согласно комментариям Томаса ниже. Я провел тест, чтобы сравнить способ решения этой проблемы с помощью try/catch и StringUtils. Тест был запущен 5 миллионов раз для каждого. Среднее время попытки/перехвата составило 21 секунду. Среднее время для StringUtils составило 8 секунд. Таким образом, использование StringUtils для большой нагрузки значительно быстрее. Если нагрузка на код небольшая, вы практически не заметите разницы. Тестовый запуск был
try{
result = Integer.parseInt(num);
}catch(NumberFormatException ex){
result = -1;
}
vs
if(StringUtils.isNotBlank(num) && StringUtils.isNumeric(num)){
result = Integer.parseInt(num);
}else{
result = -1;
}
каждый цикл генерировал новую случайную строку из 10 цифр, чтобы избежать какой-либо оптимизации в циклах оператора if. Это добавило 6-7 секунд накладных расходов.
person
Sean
schedule
13.09.2010