简单的加法器

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


第一种写法(面向方法的写法)


package window.listener;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class DemoCalc {
    public static void main(String[] args) {//main方法
        CalcAdd calcAdd = new CalcAdd();//实例CalcAdd
    }
}

class CalcAdd extends Frame{//CalcAdd继承Frame
    public CalcAdd(){//构建CalcAdd构造器
        //建立三个文本框
        TextField field1 = new TextField(10);//实列化TextField,设置文本变量field1,并且长度为10个字符数
        TextField field2 = new TextField(10);//实列化TextField,设置文本变量field2,并且长度为10个字符数
        TextField field3 = new TextField(20);//实列化TextField,设置文本变量field3,并且长度为10个字符数(实列化和对象我好像傻傻分不清了)

        //建立一个按钮
        Button button = new Button("=");//创建一个按钮,显示为等号
        button.addActionListener(new CalcListener(field1,field2,field3));//button建立一个监听器,监听器实例化CalcListener的有参方法

        //建立一个标签(标签是显示作用给使用者提示作用)
        Label label = new Label("+");//标签,显示在窗口想要的位子,提示读者

        //建立一个流式布局
        setLayout(new FlowLayout());

        //按顺序在窗口里排列
        add(field1);//添加第一个文本
        add(label);//添加标签
        add(field2);//添加第二个文本
        add(button);//添加按钮
        add(field3);//添加第三个文本

        pack();//自己以最好的方式弹出窗口(并不是弹窗位子,是弹出内部大小,删除该语句执行就明白了)
        setVisible(true);//显示窗口

        addWindowListener(new WindowAdapter() {//关闭窗口框架
            @Override
            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
        });
    }
}

//监听器类
class CalcListener implements ActionListener{//设置一个接口
    //获取CalcAdd的三个文本变量
    private TextField field1,field2,field3;//保护型, 直接调用TextField中的field1,field2,field3上面有设置该变量
    public CalcListener(TextField field1,TextField field2,TextField field3) {//设置有参构造器
    	//目的是将CalcAdd里的field调入CalcListener
        this.field1 = field1;//将field1赋值给该类的field1,目的是为了下面调用
        this.field2 = field2;//将field2赋值给该类的field2,目的是为了下面调用
        this.field3 = field3;//将field3赋值给该类的field3,目的是为了下面调用
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        //获取加数和被加数
        int n1 = Integer.parseInt(field1.getText());//获取第一个数(加数)
        int n2 = Integer.parseInt(field2.getText());//获取第二个数(被加数)
        //将这个两个加法运算后放入第三个文本框
        field3.setText(""+(n1+n2));//field3设置一个文本框(要求String)但是使用“”输入暴力的让(n1+n2)强制输入,必须要有括号,因为加在字符后面没有括号为加字符

        //清楚前面两个文本框
        field1.setText("");//清除第一个文本框
        field2.setText("");//清除第二个文本框
    }
}

第二种写法


package window.listener;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

//简易计算器
public class TestCalc {
    public static void main(String[] args) {
        new Calculator().loadFrame();//实例化Calculator,并且调用方法loadFrame()
    }
}

//计算器类
class Calculator extends Frame{//Calculator继承Frame
    //属性
    TextField num1,num2,num3;//设置文本类型变量
    //方法
    public  void loadFrame(){//方法loadFrame
        //3 个文本框
        //TextField num1 = new TextField(10);   //这里必须删除TextField,否则无法输出求和值 (原因不理解)
         num1 = new TextField(10);//建立文本框num1长度为10个字符//
         num2 = new TextField(10);//建立文本框num2长度为10个字符
         num3 = new TextField(20);//建立文本框num3长度为20个字符
        //一个按钮
        Button button = new Button("=");//设置一个按钮,显示为等号
        button.addActionListener(new MyCalculatorListener(this));//按钮设置一个监听器,实例化MyCalculatorListener调用自己属性方法
        //一个标签
        Label label = new Label("+");//加号标签
        //布局
        setLayout(new FlowLayout());//流式布局

        //将文本框按钮标签加入窗口框架
        add(num1);
        add(label);
        add(num2);
        add(button);
        add(num3);

        pack();//自行排版
        setVisible(true);//显示窗口框架


        addWindowListener(new WindowAdapter() {//关闭窗口框架
            @Override
            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
        });//关闭窗口
    }
}

//监听器类
class MyCalculatorListener implements ActionListener{//设置接口
    //获取计算器这个对象,在一个类中组合另外一个类
    Calculator calculator = null;//将空赋值给计算器(不理解)
    public MyCalculatorListener(Calculator calculator) {//构造器
        this.calculator = calculator;//将计算器属性方法赋值给自己calculator
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        int n1 = Integer.parseInt(calculator.num1.getText());//将num1文本,包装成integer,然后赋值给int类型n1        
        int n2 = Integer.parseInt(calculator.num2.getText());//将num2文本,包装成integer,然后赋值给int类型n2
        calculator.num3.setText(""+(n1+n2));//第三个文本暴力输出n1+n2的值
        calculator.num1.setText("");//计算器清空文本框(第一个框)
        calculator.num2.setText("");//计算器清空文本框(第二个框)
    }
}

总结:实现一个程序目标,需要将该目标拆分为适当的步骤,足部实现。
学习地址https://www.bilibili.com/video/BV1DJ411B75F?p=9

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用`isNaN`函数来判断输入值是否为数字,如果不是,就提示用户重新输入。以下是一个简单的示例代码: ```javascript let num1, num2; do { num1 = prompt("请输入第一个数字:"); } while (isNaN(num1)); do { num2 = prompt("请输入第二个数字:"); } while (isNaN(num2)); const result = Number(num1) + Number(num2); alert(`计算结果为:${result}`); ``` 在这个示例中,使用了`do...while`循环来不断提示用户输入数字,直到输入的值为数字为止。`isNaN`函数用于检查输入值是否为数字,如果是数字则返回`false`,否则返回`true`。而`Number`函数则用于将输入值转换为数字类型。最终计算出结果并使用`alert`函数将结果显示给用户。 ### 回答2: 简单加法器(JS)是一个用于计算两个数值相加的程序。但是如果用户输入的值不是数值型,我们需要提示用户重新输入。 在JS中,我们可以使用 parseInt() 函数来将用户输入的字符串转换为整数。如果用户输入的值无法被转换为整数,parseInt() 函数会返回 NaN(非数值)。因此,我们可以使用 isNaN() 函数来判断用户输入的值是否为数值型。 下面是一个基于JS的简单加法器的伪代码,可以实现输入值不是数值型时重新输入的功能: ```javascript function addition() { let num1 = parseInt(prompt("请输入第一个数字:")); let num2 = parseInt(prompt("请输入第二个数字:")); // 判断用户输入的两个值是否都为数值型 if (isNaN(num1) || isNaN(num2)) { alert("输入值不是数值型,请重新输入!"); // 重新调用 addition() 函数 addition(); } else { // 计算两个数的和并输出结果 let sum = num1 + num2; console.log("两个数的和是:" + sum); } } // 调用 addition() 函数开始计算 addition(); ``` 在上述代码中,我们使用了递归的方式,在用户输入值不是数值型时重新调用 addition() 函数,直到用户输入的值都为数值型为止。 以上就是一个简单加法器(JS)当输入值不是数值型时重新输入的回答,希望对您有帮助! ### 回答3: 简单加法器(JS)是一个用来执行加法运算的程序。如果输入值不是数值型,我们需要提示用户重新输入正确的数值。 我们可以通过JS的内置函数parseFloat()来将输入值转换为数值类型。首先,我们需要获取用户的输入值并存储在一个变量中。然后,我们使用parseFloat()函数将这个变量的值转换为数值类型。 接下来,我们可以使用isNaN()函数来判断转换后的值是否是一个数值。isNaN()函数会返回一个布尔值,如果值是NaN(不是一个数值)则返回true,否则返回false。 如果输入值是一个数值,则我们可以继续执行加法运算。如果输入值不是一个数值,则说明用户输入了无效的值。在这种情况下,我们可以使用一个循环来提示用户重新输入数值,直到输入的值是一个数值为止。 下面是一个简单的例子,说明如何实现上述功能: ```javascript let inputValue; let number; do { inputValue = prompt("请输入一个数值"); number = parseFloat(inputValue); } while (isNaN(number)); alert("您输入的数值是:" + number); // 在这里执行加法运算 ``` 在这个例子中,我们使用了一个do-while循环来不断提示用户输入数值,直到输入的值是一个数值类型为止。一旦输入的值是一个数值,循环就会停止执行,并将数值存储在变量number中。 然后我们可以继续执行加法运算的代码。根据实际需求,你可以编写适合你的加法运算代码。这就是如何使用JS实现简单加法器,并在输入值不是数值型时要求用户重新输入的方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值