java.lang.NumberFormatException: Null-Fehler in Java

Sheeraz Gul 15 Februar 2024
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:

  1. Wenn Sie mit Formular- und numerischen Werten arbeiten und die numerischen Werte nicht richtig aus dem Feld auf der Aktionsseite abrufen können.
  2. 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:

NewForm

Nach Anklicken der Schaltfläche Ergebnis prüfen erhalten wir:

Ergebnis

Sheeraz Gul avatar Sheeraz Gul avatar

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 Facebook

Verwandter Artikel - Java Error