java.lang.NumberFormatException: Null-Fehler in Java
Dieses Tutorial demonstriert den Fehler java.lang.NumberFormatException: null
in Java.
der Fehler java.lang.NumberFormatException: null
in Java
Die NumberFormatException
tritt normalerweise auf, wenn wir versuchen, einen String mit falschem Format in einen Zahlenwert umzuwandeln. Diese Ausnahme bedeutet, dass die Konvertierung der Zeichenfolge in einen numerischen Wert nicht möglich ist.
Die NumberFormatException
ist eine Laufzeitausnahme, eine Unterklasse von IllegalArgumentException
. Diese Ausnahme kann mit den try-catch
-Blöcken behandelt werden.
Die NumberFormatException
mit einem Nullwert tritt auf, wenn wir versuchen, einen Nullwert in eine ganze Zahl umzuwandeln.
Die NumberFormatException
mit dem Wert null tritt auf, wenn wir JSP verwenden und den numerischen Wert nicht richtig aus einem Formularfeld abrufen können. Die Hauptgründe für diese Ausnahme sind:
- Wenn Sie mit Formular- und numerischen Werten arbeiten und die numerischen Werte nicht richtig aus dem Feld auf der Aktionsseite abrufen können.
- Wenn die Zeichenfolge aus dem Feld leer oder null ist.
Versuchen wir ein Beispiel, das die Ausnahme java.lang.numberformatexception: null
auslöst:
Beispiel (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>
Und das Servlet dafür ist 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);
}
}
Der obige Code löst die Ausnahme NumberFormatException
mit einer Null aus, da die Werte nicht aus den Formularfeldern abgerufen werden können. Siehe Ausgabe:
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)
Die Lösung dafür besteht darin, zu versuchen, einen Nullwert zu vermeiden. Und hier besteht das Problem darin, dass wir versuchen, IDs im Feld anstelle von Namensparametern zu verwenden. deshalb kann das System die Felder nicht erkennen.
Das Ändern von IDs in Namen löst das Problem. Hier ist die Lösung in 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>
Nach dem Ausführen des Codes lautet die Ausgabe:
Nach Anklicken der Schaltfläche Ergebnis prüfen
erhalten wir:
Sheeraz is a Doctorate fellow in Computer Science at Northwestern Polytechnical University, Xian, China. He has 7 years of Software Development experience in AI, Web, Database, and Desktop technologies. He writes tutorials in Java, PHP, Python, GoLang, R, etc., to help beginners learn the field of Computer Science.
LinkedIn FacebookVerwandter Artikel - Java Error
- Adresse wird bereits verwendet JVM_Bind-Fehler in Java
- Android Java.Lang.IllegalStateException behoben: Methode der Aktivität konnte nicht ausgeführt werden
- Ausnahme im Hauptthread Java.Lang.ClassNotFoundException in IntelliJ IDEA
- Ausnahme im Hauptthread Java.Lang.NoClassDefFoundError
- Beheben Sie das Problem, dass Java nicht installiert werden kann. Es gibt Fehler in den folgenden Schaltern
- Beheben Sie den Fehler `Es wurde keine Java Virtual Machine gefunden` in Eclipse