随笔 - 750  文章 - 1  评论 - 107  阅读 - 34万

[Java.web]简单计算器

项目的  WebRoot 目录下的 calculator.jsp
复制代码
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<!DOCTYPE HTML>
<html>
<head>
<title>计算结果</title>
</head>
<body>
    <jsp:useBean id="calculatorBean"
        class="cn.itcast.domain.CalculatorBean"></jsp:useBean>

    <jsp:setProperty property="*" name="calculatorBean" />
    <%
        try {
            calculatorBean.calculate();
        } catch (Exception ex) {
            out.write("计算出错:<font color='red'>" + ex.getMessage()
                    + "</font>");
        }
    %>

    <hr />
    <label>计算的结果是:<span id="x1"> <jsp:getProperty
                property="arg1" name="calculatorBean" /> </span> <span id="x2"><jsp:getProperty
                property="operator" name="calculatorBean" /></span> <span id="x3">
            <jsp:getProperty property="arg2" name="calculatorBean" /> </span> = <span
        id="x4"> <jsp:getProperty property="result"
                name="calculatorBean" /> </span> </label>
    <hr />

    <form method="post" action="#">
        <table border="1">
            <tr>
                <td colspan="2">简单计算器</td>
            </tr>
            <tr>
                <td>第一个参数</td>
                <td><input type="text" name="arg1" />
                </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="arg2" />
                </td>
            </tr>
            <tr>
                <td colspan="2" align="center"><input type="submit" value="计算" />
                </td>
            </tr>
        </table>
    </form>
</body>
</html>
复制代码
项目的 src 目录下的 包下面的 CalculatorBean.java
复制代码
package cn.itcast.domain;

import java.math.BigDecimal;

// 封装计算方法 Bean
public class CalculatorBean {
    private String arg1 = "0";

    private String arg2 = "0";

    private char operator = '+';

    private String result;

    public String getArg1() {
        return arg1;
    }

    public void setArg1(String arg1) {
        this.arg1 = arg1;
    }

    public String getArg2() {
        return arg2;
    }

    public void setArg2(String arg2) {
        this.arg2 = arg2;
    }

    public char getOperator() {
        return operator;
    }

    public void setOperator(char operator) {
        this.operator = operator;
    }

    public String getResult() {
        return result;
    }

    public void setResult(String result) {
        this.result = result;
    }

    public void calculate() {
        BigDecimal firstBigDecimal = new BigDecimal(arg1);
        BigDecimal sencondBigDecimal = new BigDecimal(arg2);

        switch (this.operator) {
        case '+':
            result = firstBigDecimal.add(sencondBigDecimal).toString();
            break;
        case '-':
            result = firstBigDecimal.subtract(sencondBigDecimal).toString();
            break;
        case '*':
            result = firstBigDecimal.multiply(sencondBigDecimal).toString();
            break;
        case '/':
            if (sencondBigDecimal.doubleValue() == 0) {
                //result = "除零错误!";
                //break;
                throw new RuntimeException("除零错误!");
            }
            result = firstBigDecimal.divide(sencondBigDecimal, 20,
                    BigDecimal.ROUND_HALF_UP).toString();
            break;
        default:
            result = "未设定的操作!" + String.valueOf(this.operator);
            break;
        }
    }
}
复制代码

 附上效果图:

 

posted on   z5337  阅读(3512)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示