jsp簡單的計算器如何在本頁顯示數據

這裏寫圖片描述

<body>
<%
  //接收第一個數
  String s_num1=request.getParameter("num1");
  //接收第二個數
  String s_num2=request.getParameter("num2");
  //接收運算符
  String flag=request.getParameter("flag");
  //計算
  int num1=0;
  int num2=0;
  int result=0;

  num1=Integer.parseInt(s_num1);
  num2=Integer.parseInt(s_num2);
  if(flag.equals("+")){result=num1+num2;}
    else if(flag.equals("-")){result=num1-num2;}
        else if(flag.equals("*")){result=num1*num2;}
            else if(flag.equals("/")){result=num1/num2;}
  //輸出結果

   %>   
<form  name="form1" action="myCal.jsp">
   <br>
   <hr>
   請輸入第一個數<input type="text" name="num1"><br>
   <select name="flag">
   <option value="+">+</option>
   <option value="-">-</option>
   <option value="*">*</option>
   <option value="/">/</option>
   </select>
   <br>
    請輸入第二個數<input type="text" name="num2"><br>
    <br>
   <input type="submit" value="計算" onclick="return checkNum()">
   <hr>
   <!-- 這裏輸出計算結果 -->

  計算結果是:<%=result %>
   </form>
</body>

出現錯誤

java.lang.NumberFormatException: null
    java.lang.Integer.parseInt(Integer.java:454)
    java.lang.Integer.parseInt(Integer.java:527)
    org.apache.jsp.myCal_jsp._jspService(myCal_jsp.java:99)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

關鍵錯誤在於org.apache.jsp.myCal_jsp._jspService(myCal_jsp.java:99)
這裏寫圖片描述
jsp第一次運行時,jsp文件會被服務器翻譯成一個對應的java文件,然後再被編譯成爲.class文件存儲在內存中,以後的訪問就直接訪問.class文件。但是在第一次的訪問時,”num1”、 “num2”、是空的,所以會出現java.lang.NumberFormatException: null的錯誤
我們可以在計算之前加一個if語句來進行處理
if(s_num1!=null&&s_num2!=null&&flag!=null)
輸入5+6結果不會出錯,但是因爲相當於跳轉回自己的頁面,所以在輸出結果時,沒有保留原始的數據
事實上,因爲對於flag,我們沒有進行特別的設置,所以在第一次訪問時,flag有值默認爲“+”,所以在這句話中,可以不必加flag的判斷

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章