2015-02-14 3 views
1

Я новичок. Пожалуйста, помогите мне. Заранее спасибо: D Я продолжаю получать Исключение нулевого указателяnull указатель исключение двойной разбор двойной

java.lang.NullPointerException 
sun.misc.FloatingDecimal.readJavaFormatString(Unknown Source) 
java.lang.Double.parseDouble(Unknown Source) 
com.ust.iics.Calculator.doPost(Calculator.java:38) 
com.ust.iics.Calculator.doGet(Calculator.java:24) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:620) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:727) 
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 

мой код:

package com.ust.iics; 

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("/index.html") 
public class Calculator extends HttpServlet { 
private static final long serialVersionUID = 1L; 


public Calculator() { 

} 


protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    doPost(request,response); 
} 


protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    response.setContentType("text/html"); 

    PrintWriter out = response.getWriter(); 


    double result=0; 

    String oper = request.getParameter("operation"); 

    double num1= Double.parseDouble(request.getParameter("num1")); 
    double num2= Double.parseDouble(request.getParameter("num2")); 


    if (request.getAttribute("num1")!=null) 
     num1=Double.parseDouble(request.getAttribute("num1").toString()); 
    if(request.getAttribute("num2")!=null) 
     num2=Double.parseDouble(request.getAttribute("num2").toString()); 

    if(request.getParameter("operation")!=null){ 
     oper = request.getParameter("operation"); 
    } 
    if(oper == "+"){ 
     result = num1 + num2; 
    } 
    if(oper == "-"){ 
     result = num1 - num2; 
    } 
    if(oper == "*"){ 
     result = num1 * num2; 
    } 
    if(oper == "/"){ 
     result = num1/num2; 
    } 


    out.print("<html>"); 
    out.print("<head><title> Math </title></head>"); 
    out.print("<body>"); 
    out.print("<h1>Perform a mathematical operation</h1>"); 
    out.print(num1 + " " + oper + " " + num2 + " " + "=" + "" + result); 

    out.print("<body>"); 
    out.print("</html>"); 
    out.close(); 
} 

} 

Что я должен делать? Сначала он работал, но на самом деле он не работает в браузере. Как вы думаете, моя ошибка?

+0

положить debugar в свой код проверить ответ и преобразовать значение в нужный тип –

ответ

0

Я думаю, что есть какая-то проблема в этой строке кода

double num1= Double.parseDouble(request.getParameter("num1")); 
double num2= Double.parseDouble(request.getParameter("num2")); 

комментарию эту строку. и поставьте отладчик, вы поймете, что происходит не так.

+0

спасибо за комментарии, я попробую ваши предложения: D – yhe

+0

как положить отладчик? :) – yhe

Смежные вопросы