四则运算(java)

PSP流程下的四则运算
  • 一、需求分析

1、自动生成一个四则运算
2、可以重置四则运算
3、判断计算是否正确
4、除法的计算进行四舍五入取值

  • 二、功能设计

 

1、四则运算

2、判断回答正确与否

3、给出正确答案

  • 三、代码实现

源代码:
窗口代码:

package 自测;

import 自测.WindonLogin;

public class E {
    public static void main(String[] args) {
        new WindonLogin();
        
        }
}

 运算代码:

package 自测;

import java.awt.*;
import java.awt.event.*;
import java.util.StringTokenizer;

import javax.swing.*;

public class WindonLogin extends JFrame{
    WindonLogin(){
        setLayout(null);
        setTitle("100以内的整数四则运算(除法四舍五入) ");       //显示登录界面
        setBounds(0,0,600,300);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setVisible(true);
        Container con = getContentPane();
        con.setBackground(Color.blue);      //改变颜色
        init();    //获得题目   重置   输入答案   获得正确答案
    }
    
    void init() {
        JButton button1 = new JButton("获得题目");
        JButton button2 = new JButton("重置");
        JButton button3 = new JButton("确认答案");
        JButton button4 = new JButton("获得正确答案");
        JTextField txt1 = new JTextField();
        JTextField txt2 = new JTextField();
        JTextField txt3 = new JTextField();
        //按钮位置以及文本位置
        button1.setBounds(20, 20, 100, 20);   //获取四则式子
        button2.setBounds(330, 20, 100, 20);   //重置
        button3.setBounds(20,50, 100, 20);    //验证
        button4.setBounds(20,90, 100, 20);    //输出正确答案
        txt1.setBounds(120, 20, 200, 20);
        txt2.setBounds(120, 50, 200, 20);
        txt3.setBounds(120, 90, 200, 20);
        //点击获得题目所触发的事情
        button1.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
            int num1;
            int num2;
            double result;
            int[] array = new int[]{1,2,3,4};
            num1 = (int)(Math.random()*100);
            num2 = (int)(Math.random()*100);
            int index=(int)(Math.random()*array.length);
            int rand = array[index];
            if(rand == 1) {
                result = num1 + num2;
                txt1.setText(num1+"+"+num2);
            }
            else if(rand == 2) {
                result = num1 - num2;
                txt1.setText(num1+"-"+num2);
            }
            else if(rand ==3) {
                result = num1 * num2;
                txt1.setText(num1+"*"+num2);
            }
            else {
                result = num1 / num2;
                txt1.setText(num1+"/"+num2);
            }
        }
    });
        //点击重置按钮后所触发的事情        
        button2.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                txt1.setText(" ");
                txt3.setText(" ");
                }
                });
        //    按确认答案后所触发的监视器    
        button3.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                String number1 = txt1.getText();
                String number2 = txt2.getText();
                String s;
                //累计计算正确答案 
                double getresult;   //文本框中获取的答案(由做题人输入)
                String regex = "[^0123456789.]+";
                s = number1.replaceAll("([1-9]+[0-9]*|0)(\\.[\\d]+)?", "");   //取出运算符
                number1 = number1.replaceAll(regex,"#");   //取出数字用#号隔开
                StringTokenizer nums = new StringTokenizer(number1,"#");   //为number1构造一个分析器,以#号隔开
                String item = nums.nextToken();
                double high = Double.parseDouble(item);
                double result = high;
                if(s.equals("+"))
                {        
                    item = nums.nextToken();
                    high = Double.parseDouble(item);
                    result = result + high;
                }
                else if(s.equals("-")) {
                    item = nums.nextToken();
                    high = Double.parseDouble(item);
                    result = result - high;
                }
                else if(s.equals("*")) {
                    item = nums.nextToken();
                    high = Double.parseDouble(item);
                    result = result * high;
                }
                else {
                    item = nums.nextToken();
                    high = Double.parseDouble(item);
                    result = result / high;
result = Math.round(result); } getresult
= Double.parseDouble(number2); //比较答案 if(result == getresult) { JOptionPane.showMessageDialog(txt2, "答案正确","消息对话框",JOptionPane.INFORMATION_MESSAGE); } else { JOptionPane.showMessageDialog(txt2, "答案错误","消息对话框",JOptionPane.INFORMATION_MESSAGE); } } }); button4.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { //计算正确答案 txt3.setText(" "); String number1 = txt1.getText(); String s; //累计计算正确答案 String regex = "[^0123456789.]+"; s = number1.replaceAll("([1-9]+[0-9]*|0)(\\.[\\d]+)?", ""); //取出运算符 number1 = number1.replaceAll(regex,"#"); //取出数字用#号隔开 StringTokenizer nums = new StringTokenizer(number1,"#"); //为number1构造一个分析器,以#号隔开 String item = nums.nextToken(); double high = Double.parseDouble(item); double result = high; if(s.equals("+")) { item = nums.nextToken(); high = Double.parseDouble(item); result = result + high; } else if(s.equals("-")) { item = nums.nextToken(); high = Double.parseDouble(item); result = result - high; } else if(s.equals("*")) { item = nums.nextToken(); high = Double.parseDouble(item); result = result * high; } else { item = nums.nextToken(); high = Double.parseDouble(item); result = result / high; result = Math.round(result); } txt3.setText("正确答案为:"+result); } }); add(button1); add(button2); add(button3); add(button4); add(txt1); add(txt2); add(txt3); } }

四、运行测试

 

 

 

 

 

 

 

注意除法结果为计算值四舍五入

 

 

posted on 2021-09-19 14:31  #f#f  阅读(240)  评论(0)    收藏  举报

导航