生成四则运算

1.题目要求

  • 本次作业要求两个人合作完成,驾驶员和导航员角色自定,鼓励大家在工作期间角色随时互换,这里会布置两个题目,请各组成员根据自己的爱好任选一题。
    题目1:
    我们在刚开始上课的时候介绍过一个小学四则运算自动生成程序的例子,请实现它,要求:
    能够自动生成四则运算练习题
    可以定制题目数量
    用户可以选择运算符
    用户设置最大数(如十以内、百以内等)
    用户选择是否有括号、是否有小数
    用户选择输出方式(如输出到文件、打印机等)
    最好能提供图形用户界面(根据自己能力选做,以完成上述功能为主)

2.角色选择

  • 驾驶员:林陆 领航员:王灵杰

3.程序代码

代码链接:coding

  • 界面设计
    看见题目要求界面设计,本着学习与好奇的兴趣,在网上学习了有关WindowBuilder的使用。


package org.eclipse.wb.swing;
import java.awt.BorderLayout;
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;

import org.omg.PortableServer.RequestProcessingPolicyValue;

import javax.swing.JLabel;
import javax.swing.JCheckBox;
import java.awt.Font;
import java.awt.Panel;
import javax.swing.JSpinner;
import javax.swing.SpinnerNumberModel;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.event.ItemListener;
import java.awt.event.ItemEvent;
import javax.swing.JTextArea;
import java.awt.TextField;
import java.awt.Toolkit;
import java.awt.List;
import javax.swing.JButton;
import javax.swing.JToggleButton;
import javax.swing.JTextField;
import javax.swing.JList;
import java.awt.ScrollPane;

public class HelloWorld extends JFrame {

    private JPanel contentPane;
    private JTextField fanwei;
    private JTextField shuliang;
    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    HelloWorld frame = new HelloWorld();
                    frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    /**
     * Create the frame.
     */
    public HelloWorld() {
        setTitle("\u56DB\u5219\u8FD0\u7B97\u81EA\u52A8\u751F\u6210");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(100, 100, 450, 300);
        contentPane = new JPanel();
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        contentPane.setLayout(null);
        setContentPane(contentPane);
        
        JCheckBox chckbxNewCheckBox = new JCheckBox("\u52A0\u6CD5");
        chckbxNewCheckBox.setFont(new Font("楷体", Font.PLAIN, 22));
        contentPane.add(chckbxNewCheckBox, BorderLayout.WEST);
        
        JCheckBox jiafa = new JCheckBox("\u52A0\u6CD5");
        jiafa.setFont(new Font("楷体", Font.PLAIN, 20));
        jiafa.setBounds(6, 6, 65, 23);
        contentPane.add(jiafa);
        
        
        
        JCheckBox jianfa = new JCheckBox("\u51CF\u6CD5");
        
        jianfa.setFont(new Font("楷体", Font.PLAIN, 20));
        jianfa.setBounds(73, 6, 65, 23);
        contentPane.add(jianfa);
        
        JCheckBox chengfa = new JCheckBox("\u4E58\u6CD5");
        chengfa.setFont(new Font("楷体", Font.PLAIN, 20));
        chengfa.setBounds(140, 6, 65, 23);
        contentPane.add(chengfa);
        
        JCheckBox chufa = new JCheckBox("\u9664\u6CD5");
        chufa.setFont(new Font("楷体", Font.PLAIN, 20));
        chufa.setBounds(207, 6, 65, 23);
        contentPane.add(chufa);
        
        JCheckBox kuohao = new JCheckBox("\u62EC\u53F7");
        kuohao.setFont(new Font("楷体", Font.PLAIN, 20));
        kuohao.setBounds(344, 6, 65, 23);
        contentPane.add(kuohao);
        
        JCheckBox xiaoshu = new JCheckBox("\u5C0F\u6570");
        xiaoshu.setFont(new Font("楷体", Font.PLAIN, 20));
        xiaoshu.setBounds(277, 6, 65, 23);
        contentPane.add(xiaoshu);
        
        JLabel lblNewLabel = new JLabel("\u6570\u503C\u8303\u56F4");
        lblNewLabel.setFont(new Font("楷体", Font.PLAIN, 20));
        lblNewLabel.setBounds(10, 42, 80, 28);
        contentPane.add(lblNewLabel);
        
        JLabel lblNewLabel_1 = new JLabel("\u9898\u76EE\u6570\u91CF");
        lblNewLabel_1.setFont(new Font("楷体", Font.PLAIN, 20));
        lblNewLabel_1.setBounds(207, 45, 91, 23);
        contentPane.add(lblNewLabel_1);
        
        JToggleButton button = new JToggleButton("\u751F\u6210\u7B97\u5F0F");
        button.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                String n1 = fanwei.getText();
                int num = Integer.parseInt(n1);
                String n2 = shuliang.getText();
                int max = Integer.parseInt(n2);
                int[] a = {0,0,0,0};
                int kh=0,outp=0,xs=0;
                if(jiafa.isSelected())
                    a[0] = 1;
                if(jianfa.isSelected())
                    a[1] = 1;
                if(chengfa.isSelected())
                    a[2] = 1;
                if(chufa.isSelected())
                    a[3] = 1;
                if(kuohao.isSelected()) {
                    kh = 1;
                }else {
                    kh = 0;
                }
                if(xiaoshu.isSelected()) {
                    xs = 1;
                }else {
                    xs = 0;
                }
                shuchu.aa(num,max,a,kh,xs);
            }
        });
        button.setFont(new Font("楷体", Font.PLAIN, 20));
        button.setBounds(6, 95, 132, 38);
        contentPane.add(button);
        
        fanwei = new JTextField();
        fanwei.setBounds(100, 48, 80, 21);
        contentPane.add(fanwei);
        fanwei.setColumns(10);
        
        shuliang = new JTextField();
        shuliang.setBounds(308, 48, 80, 21);
        contentPane.add(shuliang);
        shuliang.setColumns(10);
    }

    private void RequestProcessingPolicyValue(String string) {
        // TODO Auto-generated method stub
        
    }
}

4.成果展示

924823-20180417195123081-1574713370.png
924823-20180417195202792-809427380.png
924823-20180417203335193-1134455429.png

5.心得体会

同伴评价

  • 对于此次结对编程,这是我和我伙伴第一次设计java界面,在此期间遇见了很多困难,但是我们两个人互帮互助顺利完成任务,也从中获得了许多新知识。我的伙伴王灵杰同学作为领航员,辅助我完成了程序代码的编写,和对代码的复审,减少了程序在运行过程中bug的出现。最重要的是在我没有耐心,一度想放弃对界面设计的学习时,他一直鼓励我不要放弃,最终在我们两互帮互助下完成了一个简单的界面设计,虽然挺界面简单,但我们收获颇丰,更加促进了我们的友谊。

经验总结

  • 此次作业,大大提升了我的编程能力和学习能力。让我深刻体验到了在我们自己使用app带给我们便捷的同时,知道了对于我们而言最终目的是要设计出适合用户使用的软件,而不只是在小黑框里实现相应的结果,所以这对我们来说,去学会用户界面的设计是很重要的,因为这是提供给用户的第一印象,还能让用户操作使用更加便捷。

转载于:https://www.cnblogs.com/linlu/p/8869418.html

### Java生成四则运算Java生成随机的四则运算题目可以分为几个步骤: 1. **生成操作数**:根据需要设定范围内的两个整数或浮点数作为加、减、乘、除的操作数。 2. **选择运算符**:从加法(+)、减法(-)、乘法(*)和除法(/)这四个基本运算符中随机选取一个。 3. **构建表达式并计算结果**:将选定的操作数和运算符组合成完整的算术表达式,并通过程序计算出正确的答案。 下面是一个简单的示例代码片段,演示了如何实现上述功能: ```java import java.util.Random; public class ArithmeticGenerator { private static final char[] OPERATORS = {'+', '-', '*', '/'}; private Random random = new Random(); // 获取指定范围内随机整数 public int getRandomInt(int min, int max) { return random.nextInt(max - min + 1) + min; } // 随机获取一个运算符号 public char getOperator() { return OPERATORS[random.nextInt(OPERATORS.length)]; } // 构建一道简单题目的字符串表示形式以及它的解 public String generateProblemAndAnswer(){ int num1 = this.getRandomInt(0,50); // 可调整数值区间 int num2 = this.getRandomInt(1,50); // 确保num2非零避免除以零错误 char op = this.getOperator(); StringBuilder problemStr = new StringBuilder().append(num1).append(" ").append(op).append(" ").append(num2); double result= switch (op){ case '+' -> num1 + num2 ; case '-' -> num1 - num2; case '*' -> num1 * num2; default /*'/'*/-> Math.round((double)(num1)/(double)(num2)*1e6)/1e6; // 结果保留六位小数防止精度丢失 }; return "问题:"+problemStr.toString()+"\n"+"解答:" +result+"\n"; } } ``` 以上例子展示了创建`ArithmeticGenerator`类来封装四则运算任务生成的核心逻辑。你可以根据实际需求对这个基础框架做进一步优化和完善,比如加入异常处理机制保证健壮性;或者增加难度选项控制题目复杂程度等。 此外,为了提高用户体验,在展示给用户的界面里还可以考虑添加更多互动元素如计时器、得分统计等功能模块。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值