永发信息网

大家帮我看看这个JSP哪里错了

答案:4  悬赏:20  手机版
解决时间 2021-05-01 10:36
<%@ page contentType="text/html;charset=gb2312" %>

<html>
<h1>我的第一个JSP</h1><hr>
<head>
<script language="javascript">

      <!--

           function checkNum(){
       if(form.num1.value==""){
        window.alert("num1不能为空");
     return false;
    }
   
    if(form.num2.value==""){
        window.alert("num2不能为空");
     return false;
    }
   
    if(Math.round(form.num1.value)!=form.num1.value){
     
      window.alert("num1无效");
      return false;
   
    }
   
    if(Math.round(form.num2.value)!=form.num2.value){
     
      window.alert("num2无效");
      return false;
   
    }
   
    if(form.num2.value==0&&form.flag.value=="/"){
   
      window.alert("can不能为0");
      return false;
   
    }
    
     }

     
     -->


</script>
</head>
<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{
   result=num1/num2;
   }
 
 
  %>






<form name="form" action="Result.jsp">
请输入第一个数:<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>
<input type="submit" value="计算" onClick="return checkNum();" >
</form><br>
<hr>

结果是:<%= result %>



</body>
</html>
最佳答案
你直接进入这个页面
String s_num1=request.getParameter("num1");
  String s_num2=request.getParameter("num2");
  String flag=request.getParameter("flag");
这些都是空的
num1=Integer.parseInt(s_num1);
  num2=Integer.parseInt(s_num2);
这里就会报错了。。所以先判断一下
还有就是
<option value=+>+</option>
<option value=->-</option>
<option value=*>*</option>
<option value=/>/</option>
最好都加上引号哈。
我给你改了下。。已经能正常运行了。。
<%@ page contentType="text/html;charset=gb2312"%>
<html>
<h1>
  我的第一个JSP
</h1>
<hr>
<head>
  <script language="javascript">
    <!--
    function checkNum(){
    if(form.num1.value==""){
    window.alert("num1不能为空");
    return false;
    }
   
    if(form.num2.value==""){
    window.alert("num2不能为空");
    return false;
    }
   
    if(Math.round(form.num1.value)!=form.num1.value){
    
    window.alert("num1无效");
    return false;
   
    }
   
    if(Math.round(form.num2.value)!=form.num2.value){
    
    window.alert("num2无效");
    return false;
   
    }
   
    if(form.num2.value==0&&form.flag.value=="/"){
   
    window.alert("can不能为0");
    return false;
   
    }
    
    }
    
    -->
</script>
</head>
<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;
   if(s_num1 != null && s_num2 != null && flag != null) {
    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 {
    result = num1 / num2;
   }
   }
  
  %>
  <form name="form" action="Result.jsp">
   请输入第一个数:
   <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>
   <input type="submit" value="计算" onClick="return checkNum();">
  </form>
  <br>
  <hr>
  结果是:
  <%=result%>
</body>
</html>
全部回答
1.   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{    result=num1/num2;    }  修改为: if(s_num1!=null&&s_num2!=null&&flag!=null) {  num1=Integer.parseInt(s_num1);  ...     result=num1/num2;    } } 2. <form name="form" action="Result.jsp"> 修改为: <form method="GET" name="form" action="."> 3. 如果想输入的数不会被刷掉,则: 请输入第一个数:<input type="text" name="num1"> 修改为:<input type="text" name="num1" value="<%=num1%>"/> 第二个数同样修改。 4. 而对于选择的符号也不想被刷掉的话,<option value=+>+</option> 修改为:<option value=+ selected="<%=(flag==null?false:flag.equals("+"))%>">+</option> 其它作相同修改。

因为初始化的时候

String s_num1=request.getParameter("num1");
String s_num2=request.getParameter("num2");

这两个参数都为空,所以需要在Integer.parseInt转换成整型的时候出错了,null不能转换成整型

只要在初始化的时候判断如果s_num1和s_num2为空就不执行下面的操作就可以了

缺少method=“post”

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
想买个8位数的QQ号码,不知淘宝哪个地方好,
打开酷狗音乐播放器的时候 怎么每次都会自动
哈姆宝宝封测激活码!!!!
帮助人关心人的谚语,表示关心别人胜过关心自
无锡新区人才市场招聘会在一般在哪里举行…具
辰溪861什么时候建厂的?准确到日子
异性之间有真的友情
女生把男生甩了,还说他善良这是为什么?
回味椒麻鸡地址在哪,我要去那里办事
华科附近哪有联想笔记本维修的地方?
最近有什么好看的小说异能的 有神的小说吗
帮忙翻译一句话,谢谢
超级QQ短信!
在人人上为什么我没有加他为好友,他看过我的
广州有几个花鸟市场,武汉花鸟市场有哪些
推荐资讯
中国建设银行营口繁荣路ATM地址在什么地方,
10月18日杭州市天气如何
十点半英语怎么说,10点45分用英语怎么说
我诺基亚6700s 拍摄的录像 为什么在电脑上放
爱默生诗歌最著名短诗,赞美菊花的诗句 古诗咏
怎样区分及物动词和不及物动词?急!
6730c C5哪个好点
这月我做销售感觉起动不起来.一个橙汁大家挤.
地下诚地面的流星洛买的到多少RMB???
为什么我的QQ微博上总是有不认识的人的广播?
哀的近义词,生产过剩的近义词
爱爱护花草的名言警句,十句关于书籍的名人名
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?