2014-09-26 2 views
-1

Привет я получаю следующее сообщение об ошибке:NumberFormatException Ошибка

2014-09-26T14:17:40.779-0300|Grave: 'java.lang.NumberFormatException' recebido ao invocar escuta de a��o '#{comentario.cancelarAtendimento}' para o componente 'j_idt140' 
2014-09-26T14:17:40.780-0300|Grave: java.lang.NumberFormatException: For input string: "" 

я создал этот форматировщик:

DateFormat formatter = DateFormat.getDateInstance(DateFormat.MEDIUM, new Locale("pt", "BR")); 

и я хочу retrive даты от сессии следующим образом:

if (sessao.getAttribute("dataInicial") != null) 
     { 

      dataInicial = (String) sessao.getAttribute("dataInicial"); 


      dataIni = new java.sql.Date(formatter.parse(dataInicial).getTime()); 

     } 

затем я передаю данныеИн здесь

ocorrencias = cadastradorOcorrecia.pesquisarAvancada(usuario.getCodigo(), Integer.parseInt(pesqCodigo), pesquisaCliente, pesquisaStatus, pesquisaDepartamento, pesquisaSolicitante, pesquisaUltimoAtend, pesquisaSistema, dataIni, dataFi, pesquisaCriador,Integer.parseInt(pesquisaProduto),Integer.parseInt(pesquisaModulo)); 

здесь я получаю numberFormatException ---> Может ли кто-нибудь иметь представление о том, что я делаю неправильно?

Заранее спасибо

и затем переходит к экземпляру дао для retrive информации с базой данных.

+0

Какова ценность 'dataInicial'? Пустая строка? – gtgaxiola

+0

в этом случае является нулевым – marco

+0

Если это было null, ваш Formatter предоставит NullPointerException .. Если он пуст, это будет ParseException .. Вы получаете NumberFormatException – gtgaxiola

ответ

1

Integer.parseInt выбрасывает NumberFormatException, если он не может преобразовать строку в целое число. В вашем случае я проверил бы значения pesqCodigo, pesquisaProduto & pesquisaModulo.

JavaDoc для Integer.parseInt(String s)

Примеры

Integer.parseInt(" 234"); ---> Throws NumberFormatException as it has space 
Integer.parseInt(""); ---> Throws NumberFormatException as it is not parseable for an integer 
Integer.parseInt(null); ---> Throws NumberFormatException and not npe 
Integer.parseInt(" 234 ".trim()); ---> Doesnt throw NumberFormatException as it trims before trying to parse it. 

Edit:

Это не удивительно, что он не работает. Это, вероятно, лучше работать:

SimpleDateFormat sdf = new SimpleDateFormat("EE MMM dd HH:mm:ss z yyyy", 
              Locale.ENGLISH); 

Тогда для печати с требуемым форматом вам нужен второй SimpleDateFormat:

Date parsedDate = sdf.parse(date); 
SimpleDateFormat print = new SimpleDateFormat("MMM d, yyyy HH:mm:ss"); 
System.out.println(print.format(parsedDate)); 

Примечания: Вы должны включить локаль, как если ваш язык не английский, то имя дня может не распознаваться IST неоднозначно и может привести к проблемам, поэтому вы можете использовать правильное имя часового пояса, если это возможно на вашем входе.

+0

теперь я получил 2014-09-26T15: 00: 32.178-0300 | Могила: java.text.ParseException: Unparseable date: "" – marco

+0

@marco, пожалуйста, прочитайте java doc для синтаксического анализа даты, чтобы понять, почему эта ошибка возникает, вам будет гораздо быстрее решить проблему, чем продолжать запрашивать SO. Проверьте отредактированный ответ. – StackFlowed

0

По меньшей мере один из pesqCodigo, pesquisaProduto или pesquisaModulo - это строка, которая не представляет собой число.

Я думаю, что нет никакого отношения с dataInicial, так как DateFormat не следует выбрасывать NumberFormatException. Методы Integer.parseInt() могут вызывать это исключение, поэтому просто взгляните на использование этой функции.

+0

2014-09-26T15: 00: 32.178-0300 | Grave: java.text.ParseException: Unparseable date: "" – marco

+0

Вы говорите в своем вопросе, что у вас есть NumberFormatException ...: «здесь я получаю числоFormatException --- > Может ли кто-нибудь понять, что я делаю неправильно? ". И это название вопроса !!! – eternay

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