迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > Java >

Java 中错误 java.lang.NumberFormatException: Null

作者:迹忆客 最近更新:2023/07/07 浏览次数:

本篇文章介绍了 Java 中的 java.lang.NumberFormatException: null 错误。


Java 中的 java.lang.NumberFormatException: null 错误

当我们尝试将格式不正确的字符串转换为数字值时,通常会发生 NumberFormatException。 此异常意味着将字符串转换为数值是不可能的。

NumberFormatException 是一个运行时异常,是 IllegalArgumentException 的子类。 可以使用 try-catch 块来处理此异常。

当我们尝试将 null 值转换为整数时,会出现带有 null 值的 NumberFormatException。

当我们使用 JSP 并且无法从表单字段正确获取数值时,会出现值为 null 的 NumberFormatException。 造成该异常的主要原因有:

  1. 使用表单和数值时,无法从操作页面的字段中正确获取数值。
  2. 当字段中的字符串为空或 null 时。

让我们尝试一个抛出 java.lang.numberformatException: null 异常的示例:

示例(NewForm.jsp):

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
    <title>Calculator</title>
</head>
<body>
    <form action="ExampleMath" method="post">
        Enter first number : <input type="number" id="first" required><br>
        Enter second number : <input type="number" id="second" required><br>

        <input type="radio" id="add" name="math" value="add">
        <label for="addition">Addition</label><br>
        <input type="radio" id="sub" name="math" value="sub">
        <label for="substraction">Subtraction</label><br>
        <input type="radio" id="multi" name="math" value="multi">
        <label for="multiplication">Multiplication</label><br>
        <input type="radio" id="div" name="math" value="div">
        <label for="division">Division</label><br><br>

        <input type="submit" value="Check Result">
    </form>
</body>
</html>

其 servlet 是 ExampleMath.java:

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/ExampleMath")ExampleMath
public class ExampleMath  extends HttpServlet {
    private static final long serialVersionUID = 1L;
    protected void doPost(HttpServletRequest HTTP_Request, HttpServletResponse HTTP_Response)
    throws ServletException, IOException,NumberFormatException {

        HTTP_Response.setContentType("text/html");
        PrintWriter Print_Writer = HTTP_Response.getWriter();
        int Number1 = Integer.parseInt(HTTP_Request.getParameter("first"));
        int Number2 = Integer.parseInt(HTTP_Request.getParameter("second"));
        String Symbol = HTTP_Request.getParameter("math");

        int result = 0;
        if(Symbol.equals("addition"))
            result = Number1 + Number2;
        else if(Symbol.equals("substraction"))
            result = Number1 - Number2;
        else if(Symbol.equals("multiplication"))
            result = Number1 * Number2;
        else
            result = Number1 / Number2;
        Print_Writer.println(result);

    }
}

上面的代码抛出 NumberFormatException 异常并返回 null,因为它无法从表单字段获取值。 查看输出:

HTTP Status 500 – Internal Server Error Type Exception Report

Message null

Description The server encountered an unexpected condition that prevented it from fulfilling the request.

Exception

java.lang.NumberFormatException: null
    java.base/java.lang.Integer.parseInt(Integer.java:614)
    java.base/java.lang.Integer.parseInt(Integer.java:770)
    DemWeb.ExampleMath.doPost(ExampleMath.java:19)
    jakarta.servlet.http.HttpServlet.service(HttpServlet.java:689)
    jakarta.servlet.http.HttpServlet.service(HttpServlet.java:770)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)

解决方案是尽量避免空值。 在这里,问题是我们尝试在字段中使用 ids 而不是名称参数; 这就是系统无法检测到这些字段的原因。

将 id 更改为名称即可解决问题。 这是 NewForm.jsp 中的解决方案。

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
    <title>Calculator</title>
</head>
<body>
    <form action="ExampleMath" method="post">
        Enter first number : <input type="number" name="first" required><br>
        Enter second number : <input type="number" name="second" required><br>

        <input type="radio" id="add" name="math" value="add">
        <label for="addition">Addition</label><br>
        <input type="radio" id="sub" name="math" value="sub">
        <label for="substraction">Subtraction</label><br>
        <input type="radio" id="multi" name="math" value="multi">
        <label for="multiplication">Multiplication</label><br>
        <input type="radio" id="div" name="math" value="div">
        <label for="division">Division</label><br><br>

        <input type="submit" value="Check Result">
    </form>
</body>
</html>

运行代码后,输出将是:

NewForm

点击查看结果按钮后,我们得到:

结果

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

解决 Java 中 Generic Array Creation 错误

发布时间:2023/07/12 浏览次数:189 分类:Java

本篇文章通过代码示例说明了 generic array creation 错误,并重点介绍了创建通用数组时出现此错误的原因。 本次讨论将得出解决方案,我们将学习如何使用对象数组和反射功能创建通用数组。

Java.Net.UnknownHostException 异常

发布时间:2023/07/12 浏览次数:190 分类:Java

本篇文章介绍了 Java 中的 java.net.UnknownHostException 错误。Java中java.net.UnknownHostException的原因 java.net.UnknownHostException 表示找不到主机名的 IP 地址。

Java 中异常 java.lang.ClassCastException

发布时间:2023/07/12 浏览次数:72 分类:Java

当我们尝试将对象从父类转换为子类的对象时,会引发 java.lang.ClassCastException。 但是,如果我们尝试在两个完全不相关的类型之间转换对象,也可能会抛出该错误。本文将帮助您处理 Java 的 j

Java StackOverflowError 错误

发布时间:2023/07/12 浏览次数:190 分类:Java

本文解决了 Java 程序的 main() 方法中出现 java.lang.StackOverflowError 错误的可能原因。Java 中的 java.lang.StackOverflowError Java 中抛出 java.lang.StackOverflowError 表示应用程序的堆栈由于特别深的递归而已耗尽

修复 Java Unexpected Type 错误

发布时间:2023/07/12 浏览次数:132 分类:Java

本篇文章介绍了 Java 中的 Unexpected Type 错误。修复Java unexpected type 错误 当我们尝试将值分配给值或表达式而不是变量时,就会发生 Java 意外类型错误。

修复 错误 Javax.Net.SSL.SSLHandshakeException

发布时间:2023/07/12 浏览次数:66 分类:Java

本篇文章介绍了 Java 中的 javax.net.ssl.SSLHandshakeException 错误。Java 中的 SSL 握手 SSL 握手用于客户端和服务器建立安全连接所需的信任和后勤保障。

修复 Java 错误 java.lang.UnsupportedClassVersionError

发布时间:2023/07/12 浏览次数:125 分类:Java

本篇文章介绍了 Java 中的 Exception in thread main java.lang.UnsupportedClassVersionError 错误。java.lang.UnsupportedClassVersionError的原因 UnsupportedClassVersionError 是 ClassFormatError 异常的子类,当 JVM 尝试读取类并发现

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便