NumberFormatException错误

时间:2014-09-26 17:37:38

标签: java date-format 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"));

我希望以这种方式从会话中检索日期:

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

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


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

        }

然后我在这里传递dataIni

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

这里我得到了numberFormatException --->谁能知道我做错了什么?

提前致谢

然后转到dao实例,以便用数据库检索信息。

2 个答案:

答案 0 :(得分:1)

如果Integer.parseInt无法将字符串转换为整数,则会抛出NumberFormatException。在你的情况下,我会检查pesqCodigo,pesquisaProduto&的值。 pesquisaModulo。

Integer.parseInt(String s)

的JavaDoc

示例

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.

修改

它不起作用也就不足为奇了。这可能会更好:

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含糊不清,可能导致问题,因此您应该在输入中使用正确的时区名称。

答案 1 :(得分:0)

pesqCodigopesquisaProdutopesquisaModulo中至少有一个是不代表数字的字符串。

我认为与dataInicial没有关系,因为DateFormat不应该抛出NumberFormatException。 Integer.parseInt()方法可以抛出此异常,所以只需看一下该函数的用法。