jsp简单的计算器如何在本页显示数据

本文讨论了在jsp中实现简单计算器时遇到的错误,重点是org.apache.jsp.myCal_jsp._jspService()方法导致的NumberFormatException。解决办法是在计算前添加if条件判断,确保输入不为空。同时,由于页面跳转导致数据丢失,提出了需要考虑数据保留的策略,特别是对于计算标志flag的处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这里写图片描述

<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的判断

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值