Java 中错误 java.lang.NumberFormatException: Null
本篇文章介绍了 Java 中的 java.lang.NumberFormatException: null 错误。
Java 中的 java.lang.NumberFormatException: null 错误
当我们尝试将格式不正确的字符串转换为数字值时,通常会发生 NumberFormatException。 此异常意味着将字符串转换为数值是不可能的。
NumberFormatException 是一个运行时异常,是 IllegalArgumentException 的子类。 可以使用 try-catch 块来处理此异常。
当我们尝试将 null 值转换为整数时,会出现带有 null 值的 NumberFormatException。
当我们使用 JSP 并且无法从表单字段正确获取数值时,会出现值为 null 的 NumberFormatException。 造成该异常的主要原因有:
- 使用表单和数值时,无法从操作页面的字段中正确获取数值。
- 当字段中的字符串为空或 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>
运行代码后,输出将是:
点击查看结果按钮后,我们得到:
转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处
相关文章
如何在 Java 中延迟几秒钟的时间
发布时间:2023/12/17 浏览次数:217 分类:Java
-
本篇文章主要介绍如何在 Java 中制造程序延迟。本教程介绍了如何在 Java 中制造程序延时,并列举了一些示例代码来了解它。
如何在 Java 中把 Hashmap 转换为 JSON 对象
发布时间:2023/12/17 浏览次数:187 分类:Java
-
它描述了允许我们将哈希图转换为简单的 JSON 对象的方法。本文介绍了在 Java 中把 Hashmap 转换为 JSON 对象的方法。我们将看到关于创建一个 hashmap,然后将其转换为 JSON 对象的详细例子。
如何在 Java 中按值排序 Map
发布时间:2023/12/17 浏览次数:171 分类:Java
-
本文介绍了如何在 Java 中按值对 Map 进行排序。本教程介绍了如何在 Java 中按值对 Map
进行排序,并列出了一些示例代码来理解它。
如何在 Java 中打印 HashMap
发布时间:2023/12/17 浏览次数:192 分类:Java
-
本帖介绍了如何在 Java 中打印 HashMap。本教程介绍了如何在 Java 中打印 HashMap 元素,还列举了一些示例代码来理解这个主题。
在 Java 中更新 Hashmap 的值
发布时间:2023/12/17 浏览次数:146 分类:Java
-
本文介绍了如何在 Java 中更新 HashMap 中的一个值。本文介绍了如何在 Java 中使用 HashMap 类中包含的两个方法-put() 和 replace() 更新 HashMap 中的值。
Java 中的 hashmap 和 map 之间的区别
发布时间:2023/12/17 浏览次数:79 分类:Java
-
本文介绍了 Java 中的 hashmap 和 map 接口之间的区别。本教程介绍了 Java 中 Map 和 HashMap 之间的主要区别。在 Java 中,Map 是用于以键值对存储数据的接口,
在 Java 中获取用户主目录
发布时间:2023/12/17 浏览次数:218 分类:Java
-
这篇文章向你展示了如何在 Java 中获取用户主目录。本教程介绍了如何在 Java 中获取用户主目录,并列出了一些示例代码以指导你完成该主题。
Java 中 size 和 length 的区别
发布时间:2023/12/17 浏览次数:179 分类:Java
-
这篇文章教你如何知道 Java 中大小和长度之间的区别。本教程介绍了 Java 中大小和长度之间的区别。我们还列出了一些示例代码以帮助你理解该主题。
Java 中的互斥锁
发布时间:2023/12/17 浏览次数:111 分类:Java
-
了解有关 Java 中互斥锁的一切,在计算机科学领域,互斥或互斥被称为并发控制的属性。每台计算机都使用称为线程的最小程序指令序列。有一次,计算机在一个线程上工作。为了更好地理解,