回麻雀苑主页
2.6简易计算器代码及说明
作者:老麻雀
2006/9/13 14:56:43
简易计算器
为了进一步体验JSP动态网页,将上一个范例稍加修改,做一个简易的计算器。同时解决上一个范例中,输入非正常数据,程序不能运行的问题。
一、 范例的演示和代码清单
演示步骤:
1. 启动JSP引擎后,启动IE,在地址栏键入http://127.0.0.1:8080/ch2/ch2-31.htm,如图2-16所示:
图 2-16
2. 在两个文本框中输入数字,并且在下拉列表中,选择运算符号,点击“计算”,可看到图2-17所示的界面,可以选择不同的运算符号,输入整数、小数、正数、负数等各种不同的数试一下运算的结果。
图 2-17
3. 如果文本框中未输入任何内容,直接点击“计算”会出现图2-18。如果文本框中输入字母、汉字等非数字的内容,直接点击“计算”会出现图2-19。如果选择了除法,并且除数输入0,也有相应的提示界面。
图 2-18 图 2-19
通过演示我们可以看到,这个计算器虽然简单,但已比较完善了。能够拦截输入的各种非法数据、能够正确的对任何实数进行加减乘除运算。
两个网页的代码如下:
◇-◇-◇-◇-◇-◇-◇-◇-◇-◇ 简易计算器 ◇-◇-◇-◇-◇-◇-◇-◇-◇
范例ch2-31.htm
1) <html>
2) <head>
3) <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
4) <title>简易计算器</title>
5) <style type="text/css">
6) <!--HTML表单提供数据和运算符,JSP动态网页对数据进行指定运算,并能对错误的数据输入进行提示-->
7) .style3 {font-size: x-small}
8) </style></head>
9) <body bgcolor="#FFFFCC" style="text-align:center">
10) <form action="ch2-31.jsp" name="form" target="_self"><table width="300" border="0" cellpadding="0" cellspacing="0" bgcolor="#ddeeff">
11) <tr align="center">
12) <td height="50" colspan="3">两个数的简易计算器</td>
13) </tr>
14) <tr>
15) <td height="50" align="center" valign="bottom"><div align="right" class="style3">第一个数</div></td>
16) <td height="50" align="center"> </td>
17) <td align="center" valign="bottom"><div align="left" class="style3">第二个数</div></td>
18) </tr>
19) <tr>
20) <td width="111" height="50" align="center" valign="top"><div align="right">
21) <input name="n1" type="text" id="n1" size="12">
22) </div></td>
23) <td width="57" height="50" align="center" valign="top"><select name="select">
24) <option value="1">+</option>
25) <option value="2">-</option>
26) <option value="3">×</option>
27) <option value="4">÷</option>
28) </select></td>
29) <td width="132" align="center" valign="top"><div align="left">
30) <input name="n2" type="text" id="n2" size="12">
31) </div></td>
32) </tr>
33) <tr align="center">
34) <td height="50" colspan="3"><input type="submit" value="计算"></td>
35) </tr>
36) </table>
37) </form>
38) </body>
39) </html>
◇-◇-◇-◇-◇-◇-◇-◇-◇-◇ 简易计算器 ◇-◇-◇-◇-◇-◇-◇-◇-◇
范例ch2-31.jsp
1) <%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" %>
2) <html>
3) <head>
4) <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
5) <title>简易计算器</title>
6) <style type="text/css">
7) <!--HTML表单提供数据和运算符,JSP动态网页对数据进行指定运算,并能对错误的数据输入进行提示-->
8) </style></head>
9) <body bgcolor="#FFFFCC" style="text-align:center">
10) <table width="466" border="0" cellpadding="0" cellspacing="0" bgcolor="#ddeeff">
11) <tr align="center">
12) <td width="405" height="50">两个数的简易计算器</td>
13) </tr>
14) <tr>
15) <td height="100">
16) <%
17) String a=request.getParameter("n1");
18) String b=request.getParameter("n2");
19) String c=request.getParameter("select");
20) if(a.equals("")||b.equals(""))
21) {
22) out.print("<font size=5>输入的数据,不能为空</font>");
23) out.print("<P><a href=ch2-31.htm>返回</a>");
24) return;
25) }
26) float x,y,z,s;
27) try {
28) x=Float.parseFloat(a);
29) y=Float.parseFloat(b);
30) z=Integer.parseInt(c);
31) }
32) catch (NumberFormatException e) {
33) out.print("<font size=5> 输入的数据,必须都是数字</font>");
34) out.print("<P><a href=ch2-31.htm>返回</a>");
35) return;
36) }
37) if (z==4&&y==0)
38) {out.print("<font size=5>0 不能做除数</font>");
39) out.print("<P><a href=ch2-31.htm>返回</a>");
40) return;
41) }
42) %>
43) <%
44) out.print("运算结果: ");
45) if (z==1)
46) {s=x+y;
47) out.print(x+"+"+y+"="+s);}
48) else if (z==2)
49) {s=x-y;
50) out.print(x+"-"+y+"="+s);}
51) else if (z==3)
52) {s=x*y;
53) out.print(x+"×"+y+"="+s);}
54) else if (z==4)
55) {s=x/y;
56) out.print(x+"÷"+y+"="+s);}
57) %>
58) </td>
59) </tr>
60) <tr>
61) <td height="30" align="center"><a href="ch2-31.htm">返回</a></td>
62) </tr>
63) </table>
64) </body>
65) </html>
二、HTML表单的分析
这个HTML表单非常简单,由两个文本框和一个下拉列表组成,再就是一个用于提交的“计算”按钮了。这里选择运算符号用的下拉列表和以前的范例略有不同,在Dreamweaver的图形设计界面下,单击运算符号的下拉列表,在属性面板中再点击“列表值”按钮,如图2-20所示:
图 2-20
在项目标签中分别是+、-、×、÷,而他们对应的值分别是 1、2、3、4 。即当网页运行时,如果选择了“+”,单击“计算”按钮后,提交的不是“+”,而是1,同理选择“-”,提交的是2。这样处理对于后面的JSP网页编写代码时,提供了方便。这一块对应的代码行是:
23) <td width="57" height="50" align="center" valign="top"><select name="select">
24) <option value="1">+</option>
25) <option value="2">-</option>
26) <option value="3">×</option>
27) <option value="4">÷</option>
28) </select></td>
三、JSP动态网页的分析
这个JSP动态网页的代码主要由拦截非法输入数据和计算显示结果过程组成。几段相关的代码提示如下:
拦截数据为空值的代码行:
20) if(a.equals("")||b.equals(""))
21) {
22) out.print("<font size=5>输入的数据,不能为空</font>");
23) out.print("<P><a href=ch2-31.htm>返回</a>");
24) return;
25) }
拦截非法数据的代码行:
26) float x,y,z,s; 定义四个浮点型变量
27) try { 抛出异常
28) x=Float.parseFloat(a); 将字符串型变量a获得的值转换成浮点型,赋值给x
29) y=Float.parseFloat(b); 将字符串型变量b获得的值转换成浮点型,赋值给y
30) z=Integer.parseInt(c); 将字符串型变量c获得的值转换成整型,赋值给z(运算符号)
31) }
32) catch (NumberFormatException e) { 异常捕捉
33) out.print("<font size=5> 输入的数据,必须都是数字</font>"); 捕捉到异常后,显示的文字
34) out.print("<P><a href=ch2-31.htm>返回</a>");
35) return;
36) }
这一段代码是先定义四个浮点型变量,其中x、y用于承载由字符串型数据转换成浮点型的两个数据 ,z用于承载代表每个运算符号的数值(1是+,2是-,3是×,4是÷),s用于承载下面计算的结果。然后抛出异常,将三个变量获得的字符串型数据转换成浮点型或整型数据。这时如果变量获得的数据不能顺利转换,必然产生异常,32、33两行就会将异常捕捉到,并屏幕输出相应的提示文字。如果三个变量获得的数据顺利转换,说明用户输入的是数字,则可以继续运行计算、显示输出的代码。
计算和显示输出的代码,并无特殊之处,在此不再进行具体地分析了。
发表须知: 一、用户须严格遵守国家法律和政策,包括但不限于《全国人大常委会关于维护互联网安全的决定》、《信息网络传播权保护条例》等规定,审慎、合法地利用伊妃(E-file)平台发表言论、作品。 二、用户的言论、行为若涉嫌违法或侵权,用户可能被强制承担因该行为直接或间接导致的全部法律责任。依照法律法规规定,伊妃(E-file)运营方有义务提供用户资料,有义务和权利采取删除、屏蔽、断开链接等各种必要措施。 三、伊妃(E-file)中心授权网络法律专业研究服务机构“网络法苑”为用户及客户提供包括免费咨询在内的全方位的法律支持。 |