小编Kit*_*Mad的帖子

Java null java.lang.IllegalArgumentException使用If-Statement解析问题

我在使用java.sql.Date.valueOf(java.lang.IllegalArgumentException)和使用Integer.parseInt(java.lang.NumberFormatException)的整数解析日期时遇到问题.

我有一个表单,要求使用条形码编号,日期和日期使用HTML5和Chrome,这将连接到后台的PostgreSQL数据库,返回带有项目的表格.当指定所有3个时,这非常有效.

但是,我希望用户能够仅使用条形码进行搜索,因此返回所有相关条目,无论日期是什么.同样,只使用日期来获取指定日期之间的任何条目.

这是我的表格:

<th><input type="text" name="barcode" size="20"></th>
        <th><input type="date" name="dateFrom"></th>
        <th><input type="date" name="dateTo"></th>
        <th><input type="submit" value="Submit" /></th>
Run Code Online (Sandbox Code Playgroud)

现在,我理解解析函数不喜欢空值,为此我使用了一个If语句来检查空值并赋值:

Date dateFrom;
String stringDateFrom = request.getParameter("dateFrom");

if (stringDateFrom == null){
        dateFrom = Date.valueOf(LocalDate.MIN);
    } else {
        dateFrom = Date.valueOf(stringDateFrom);
    }
Run Code Online (Sandbox Code Playgroud)

我的理解是If语句检查语句是否为True,如果是,则处理代码并退出,如果语句为False,则跳转到"else"部分并处理其代码.因此,如果我没有为表单中的dateFrom字段输入值,则String'stringDateFrom'将为null,因此If语句的第一部分应该运行并跳过第二部分.

这种情况不会发生,即使是'stringDateFrom'的空值我在If语句的下面一行得到错误'java.lang.IllegalArgumentException',我认为应该跳过它?

dateFrom = Date.valueOf(stringDateFrom);
Run Code Online (Sandbox Code Playgroud)

我得到错误'java.lang.NumberFormatException'与完全相同的设置,但解析一个整数,代码行是;

barcode = Integer.parseInt(stringBarcode);
Run Code Online (Sandbox Code Playgroud)

这是我的解析代码或我的if语句代码吗?

对不起,很长的帖子,我是学生,这是我项目的一部分,我不是贸易的java程序员;-)

感谢您的帮助.

编辑:解决了

感谢unholysampler让我指向正确的方向.问题是setParameter返回一个空的String作为null,因此从未满足条件.

我更改了代码以检查空字符串,或者不是空字符串,它可以工作,即

if (stringDateFrom == null)if (stringDateFrom.equals(""))

if (stringBarcode != null)if (!stringBarcode.equals(""))

感谢你的帮助.

编辑:Stacktrace

'java.sql.Date.valueOf(Date.java:143)'中的行是指代码;

if (d == null) {
            throw new java.lang.IllegalArgumentException(); …
Run Code Online (Sandbox Code Playgroud)

java null parsing if-statement

2
推荐指数
1
解决办法
1万
查看次数

标签 统计

if-statement ×1

java ×1

null ×1

parsing ×1