Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
比较两个字符串会得到java.lang.NullPointerException_Java - Fatal编程技术网

比较两个字符串会得到java.lang.NullPointerException

比较两个字符串会得到java.lang.NullPointerException,java,Java,我正在尝试从HTML帖子中获取复选框值。我的问题是post返回的是on或null,而不是true或false,因此我需要将其转换为true或false以插入数据库 Boolean hasProfile7 = Boolean.valueOf(request.getParameter("hasProfile7")) hasProfile7即使在“开启”状态下也是错误的 当复选框未勾选(false)时,这会使我的应用程序崩溃,并给出java.lang.NullPointerException 这给

我正在尝试从HTML帖子中获取复选框值。我的问题是post返回的是on或null,而不是true或false,因此我需要将其转换为true或false以插入数据库

 Boolean hasProfile7 = Boolean.valueOf(request.getParameter("hasProfile7"))
hasProfile7即使在“开启”状态下也是错误的

当复选框未勾选(false)时,这会使我的应用程序崩溃,并给出
java.lang.NullPointerException

这给了我错误的答案


我能做什么??我只希望bool在“开”时为True,在“空”时为false这是比较常量和字符串的空安全方法:

"some-value".equals(variable) // ok
如果
变量
为null,则以下代码段将引发null指针异常,因为不允许对null值调用
equals
方法:

variable.equals("some-value") // not recomended
如果值包含“on”,则此方法将返回true,否则将返回false:

public boolean isChecked(final String value) {
    if (Objects.isNull(value)) {
        return false;
    }

    if ("on".equals(value.toLowerCase())) {
        return true;
    }

    return false;
}

这是比较常量和字符串的空安全方式:

"some-value".equals(variable) // ok
如果
变量
为null,则以下代码段将引发null指针异常,因为不允许对null值调用
equals
方法:

variable.equals("some-value") // not recomended
如果值包含“on”,则此方法将返回true,否则将返回false:

public boolean isChecked(final String value) {
    if (Objects.isNull(value)) {
        return false;
    }

    if ("on".equals(value.toLowerCase())) {
        return true;
    }

    return false;
}
第一点

Boolean hasProfile7 = Boolean.valueOf(request.getParameter("hasProfile7"))
你在干什么

Boolean.valueOf(<A String>)
在这里,你已经接近做正确的事情了。您的问题是
request.getParameter(“hasProfile7”)
返回null,因此您有
*null*.equals(“on”)
,这就是为什么您会得到NPE

当您有预定义字符串时,请始终将其放在左侧:

Boolean hasProfile7 = ("on".equals(request.getParameter("hasProfile7"))) ? true : false;
在这里,即使
request.getParameter(“hasProfile7”)
为null,您也有任何异常,它只会返回false

第三点

 Boolean hasProfile7 = (request.getParameter("hasProfile7") == "on") ? true : false;
这里,您将“上的对象
”与对象
request.getParameter(“hasProfile7”)
进行比较。如果值相同,则对象不相同

最后一点,为什么要使用三元表达式
(request.getParameter(“hasProfile7”).equals(“on”)?真:假
可以翻译成

if true --> true 
if false --> false
你可以直接写

Boolean hasProfile7 = "on".equals(request.getParameter("hasProfile7"))
第一点

Boolean hasProfile7 = Boolean.valueOf(request.getParameter("hasProfile7"))
你在干什么

Boolean.valueOf(<A String>)
在这里,你已经接近做正确的事情了。您的问题是
request.getParameter(“hasProfile7”)
返回null,因此您有
*null*.equals(“on”)
,这就是为什么您会得到NPE

当您有预定义字符串时,请始终将其放在左侧:

Boolean hasProfile7 = ("on".equals(request.getParameter("hasProfile7"))) ? true : false;
在这里,即使
request.getParameter(“hasProfile7”)
为null,您也有任何异常,它只会返回false

第三点

 Boolean hasProfile7 = (request.getParameter("hasProfile7") == "on") ? true : false;
这里,您将“
上的对象
”与对象
request.getParameter(“hasProfile7”)
进行比较。如果值相同,则对象不相同

最后一点,为什么要使用三元表达式
(request.getParameter(“hasProfile7”).equals(“on”)?真:假
可以翻译成

if true --> true 
if false --> false
你可以直接写

Boolean hasProfile7 = "on".equals(request.getParameter("hasProfile7"))
您可以使用
“on”.equals(请求…
)来避免NPE。您可以使用
“on”.equals(请求…
来避免NPE。