四则运算(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); } }
四、运行测试


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

浙公网安备 33010602011771号