So I am trying to enter a value and select and interest rate from a select drop down, using java to calculate the interest earned. When I run my program I am returned with the following error:
HTTP Status 500 – Internal Server Error
Type Exception Report
Message Cannot invoke "String.trim()" because "in" is null
Description The server encountered an unexpected condition that prevented it from fulfilling the request.
Exception
java.lang.NullPointerException: Cannot invoke "String.trim()" because "in" is null
java.base/jdk.internal.math.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1838)
java.base/jdk.internal.math.FloatingDecimal.parseDouble(FloatingDecimal.java:110)
java.base/java.lang.Double.parseDouble(Double.java:651)
controller.interestServlet.doPost(interestServlet.java:36)
javax.servlet.http.HttpServlet.service(HttpServlet.java:681)
javax.servlet.http.HttpServlet.service(HttpServlet.java:764)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
Note The full stack trace of the root cause is available in the server logs.
Apache Tomcat/9.0.58
my index:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Calculate Interest</title>
</head>
<body>
<h1>Interest Calculator</h1>
<form action="interestServlet" method="post">
Please enter the dollar amount
<input type="text" name="userDollars" size="15">
Choose an interest rate: <select name="userInterest" id="userInterest">
<option value=".02">2%</option>
<option value=".03">3%</option>
<option value=".05">5%</option>
<option value=".10">10%</option>
</select>
<input type="submit" value="Calculate Interest" />
</form>
</body>
</html>
my servlet:
/**
* Servlet implementation class interestServlet
*/
@WebServlet("/interestServlet")
public class interestServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public interestServlet() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
String userDollar = request.getParameter("userDollar");
CalculateInterest setInterest = new CalculateInterest(Double.parseDouble(userDollar));
request.setAttribute("userInterestRate", setInterest);
getServletContext().getRequestDispatcher("/inerestResult.jsp").forward(request, response);
PrintWriter writer = response.getWriter();
writer.println(setInterest.toString());
writer.close();
}
}
my java:
public class CalculateInterest {
private double userDollars;
private double twoPercent;
private double threePercent;
private double fivePercent;
private double tenPercent;
/**
*
*/
public CalculateInterest() {
super();
// TODO Auto-generated constructor stub
}
/**
* @param userDollars
* @param twoPercent
* @param threePercent
* @param fivePercent
* @param tenPercent
*/
public CalculateInterest(double userDollars) {
super();
this.userDollars = userDollars;
setInterest(userDollars);
}
/**
* @return the userDollars
*/
public double getUserDollars() {
return userDollars;
}
/**
* @param userDollars the userDollars to set
*/
public void setUserDollars(double userDollars) {
this.userDollars = userDollars;
setInterest(userDollars);
}
/**
* @return the twoPercent
*/
public double getTwoPercent() {
return twoPercent;
}
/**
* @param twoPercent the twoPercent to set
*/
public void setTwoPercent(double twoPercent) {
this.twoPercent = twoPercent;
}
/**
* @return the threePercent
*/
public double getThreePercent() {
return threePercent;
}
/**
* @param threePercent the threePercent to set
*/
public void setThreePercent(double threePercent) {
this.threePercent = threePercent;
}
/**
* @return the fivePercent
*/
public double getFivePercent() {
return fivePercent;
}
/**
* @param fivePercent the fivePercent to set
*/
public void setFivePercent(double fivePercent) {
this.fivePercent = fivePercent;
}
/**
* @return the tenPercent
*/
public double getTenPercent() {
return tenPercent;
}
/**
* @param tenPercent the tenPercent to set
*/
public void setTenPercent(double tenPercent) {
this.tenPercent = tenPercent;
}
public void setInterest(double userDollars) {
final double TWOPERCENT = .02;
final double THREEPERCENT = .03;
final double FIVEPERCENT = .05;
final double TENPERCENT = .10;
setTwoPercent(userDollars * TWOPERCENT);
setThreePercent(userDollars * THREEPERCENT);
setFivePercent(userDollars * FIVEPERCENT);
setTenPercent(userDollars * TENPERCENT);
}
@Override
public String toString() {
return "CalculateInterest [userDollars=" userDollars ", twoPercent=" twoPercent ", threePercent="
threePercent ", fivePercent=" fivePercent ", tenPercent=" tenPercent "]";
}
}
my results:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>You earned interest</title>
</head>
<body>
<p>${userInterestRate.getUserDollar()} userDollar contains the following: <br />
${userCoinPouch.getTwoPercent()} twoPercent <br />
${userCoinPouch.getThreePercent()} threePercent <br />
${userCoinPouch.getFivePercent()} fivePercent <br />
${userCoinPouch.getTenPercent()} tenPercent <br />
</p>
<a href="interestIndex.jsp">Select another interest percentage</a>
</body>
</html>
my pom:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>coinconverter</groupId>
<artifactId>coinconverter</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<name>CoinConverter</name>
<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<release>17</release>
</configuration>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>3.2.3</version>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>javax.servlet.jsp-api</artifactId>
<version>2.3.3</version>
</dependency>
<dependency>
<groupId>taglibs</groupId>
<artifactId>standard</artifactId>
<version>1.1.2</version>
</dependency>
</dependencies>
</project>
CodePudding user response:
