jsp+javaBean开发计算器案例

编写一个javaBean:CalculatorBean来封装输入的参数,运算符、结果和计算方法:

package cn.sun.domain;

import java.math.BigDecimal;

//封装计算器数据的bean
public class CalculatorBean {
    private String firstNum="0";  //设置初始化用于在没有输入参数时显示计算结果
    private char operator='+';
    private String secondNum="0";
    private String result;
    public String getFirstNum() {
        return firstNum;
    }
    public void setFirstNum(String firstNum) {
        this.firstNum = firstNum;
    }   
    public char getOperator() {
        return operator;
    }
    public void setOperator(char operator) {
        this.operator = operator;
    }
    public String getSecondNum() {
        return secondNum;
    }
    public void setSecondNum(String secondNum) {
        this.secondNum = secondNum;
    }
    public String getResult() {
        return result;
    }
    public void setResult(String result) {
        this.result = result;
    }

    public void calculate(){ //计算
        BigDecimal first=new BigDecimal(this.firstNum);   //将第一个参数转换为大数据
        BigDecimal second=new BigDecimal(this.secondNum);

        //判断操作符的类型
        switch (this.operator) {  //获取运算符
            case '+':{
                this.result=first.add(second).toString();
                break;
            }
            case '-':{
                this.result=first.subtract(second).toString();
                break;
            }
            case '*':{
                this.result=first.multiply(second).toString();
                break;
            }
            case '/':{
                if(second.doubleValue()==0){ //取第二参数的值
                    throw new RuntimeException("被除数不能为0");
                }
                this.result=first.divide(second,20,BigDecimal.ROUND_HALF_UP).toString(); //保留小数点20位
                break;
            }
            default:
                throw new RuntimeException("运算符只能是:+-*/");
        }
    }
}

calculator.jsp处理请求和显示数据:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>     
    <title>My JSP 'calculator.jsp' starting page</title>   
  </head>

  <body>

    <jsp:useBean id="calculatorBean" class="cn.sun.domain.CalculatorBean"></jsp:useBean> <!-- 将数据封装到bean中 -->
    <jsp:setProperty property="*" name="calculatorBean"/> <!-- 设置bean的属性的值 -->

    <%
        try{
            calculatorBean.calculate();   //调用计算方法
        }catch(Exception e){
            out.write(e.getMessage());  //输出异常信息
        }
     %>

     <hr>
     计算结果是:
     <jsp:getProperty property="firstNum" name="calculatorBean"/>
     <jsp:getProperty property="operator" name="calculatorBean"/>    
     <jsp:getProperty property="secondNum" name="calculatorBean"/>
     =
     <jsp:getProperty property="result" name="calculatorBean"/>

    <hr>    
    <form action="/day09/calculator.jsp" method="post">
    <table width="40%" border="1">
        <tr>
            <td colspan="2">简单的计算器</td>
        </tr>
        <tr>
            <td>第一个参数</td>
            <td>
                <input type="text" name="firstNum">
            </td>
        </tr>
        <tr>
            <td>运算符</td>
            <td>
                <select name="operator">
                    <option value="+">+</option>
                    <option value="-">-</option>
                    <option value="*">*</option>
                    <option value="/">/</option>
                </select>
            </td>
        </tr>
        <tr>    
            <td>第二个参数</td>
            <td>
                <input type="text" name="secondNum">
            </td>
        </tr>
        <tr>
            <td colspan="2"><input type="submit" value="计算"></td>
        </tr>
    </table>
    </form>
  </body>
</html>

运行http://localhost:8080/day09/calculator.jsp
这里写图片描述
计算结果0+0=0,则是在CalculatorBean中初始化的参数值和运算符。

输入参数进行运算:
这里写图片描述

当被除数为0时,会抛出异常,向用户显示异常信息:
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值