JAVA--第十一周实验--编写一个算术测试小软件

Test类


/* (程序头部注释开始)   
 * 程序的版权和版本声明部分   
 * Copyright (c) 2011, 烟台大学计算机学院学生    
 * All rights reserved.   
 * 文件名称: 编写一个算术测试小软件。
 * 作 者: 雷恒鑫    
 * 完成日期: 2012 年 11 月 06 日   
 * 版 本 号: V1.0    
 * 对任务及求解方法的描述部分   
 * 输入描述:程序组成:编写 一个Teacher类负责给出算术题目,随机给出两个整数并进行运算,并判断回答者的答案是否正确;
 * 输入描述:编写一个GUI类ComputerFrame,回答者可以通过GUI看到题目并给出答案;编写一个程序执行入口运行该软件。
 * 输入描述:GUI界面如下所示。  
 * 问题描述:   
 * 程序输出:   
 * 程序头部的注释结束   
 */    
public class Test {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		ComputerFrame computerFrame = new ComputerFrame("mycomframe");
	}

}

Teacher类

public class Teacher {
	int numberOne,numberTwo;
	   String operator="";
	   boolean right;
	   public int giveNumberOne(int n)
	   {  numberOne=(int)(Math.random()*n)+1;
	      return numberOne;
	   }
	   public int giveNumberTwo(int n)
	   {  numberTwo=(int)(Math.random()*n)+1;
	      return numberTwo;
	   }
	   public String giveOperator()
	   {  double d=Math.random();
	      if(d>=0.5)
	         operator="+";
	      else
	         operator="-";  
	      return operator; 
	   }
	   public boolean getRight(int answer)
	   {  if(operator.equals("+"))
	       {  if(answer==numberOne+numberTwo)  
	            right=true;
	          else
	            right=false;
	       }
	      else if(operator.equals("-"))
	       {  if(answer==numberOne-numberTwo)  
	            right=true;
	          else
	            right=false;
	       }
	      return right; 
	   }
}


ComputerFrame类

import java.awt.FlowLayout;
import java.awt.Label;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;

//import laoshi.Teacher;

/* 输入描述:程序组成:编写 一个Teacher类负责给出算术题目,随机给出两个整数并进行运算,并判断回答者的答案是否正确;
 * 输入描述:编写一个GUI类ComputerFrame,回答者可以通过GUI看到题目并给出答案;编写一个程序执行入口运行该软件。
 * 输入描述:GUI界面如下所示。
 */
public class ComputerFrame extends JFrame implements ActionListener{
	 JTextField textOne,textTwo,textResult;
	   JButton getProblem,giveAnwser;
	   JLabel operatorLabel,message;
	   Teacher teacher;
	   ComputerFrame(String s) 
	    { super(s);
	      teacher=new Teacher();
	      setLayout(new FlowLayout());
	      textOne=new JTextField(10);     //创建textOne,其可见字符长是10
	      textTwo=new JTextField(10);    //创建textTwo,其可见字符长是10 
	      textResult=new JTextField(10);  //创建textResult,其可见字符长是10
	      operatorLabel=new JLabel("+");
	      message=new JLabel("你还没有回答呢");
	      getProblem=new JButton("获取题目");
	      giveAnwser=new JButton("确认答案");
	      add(getProblem); 
	      add(textOne);
	      add(operatorLabel);
	      add(textTwo);
	      add(new Label("="));
	      add(textResult);
	      add(giveAnwser); 
	      add(message);
	      textResult.requestFocus();//请求此 Component 获得输入焦点,并且此 Component 的顶层祖先成为获得焦点的 Window。
	      textOne.setEditable(false);
	      textTwo.setEditable(false);
	      getProblem.addActionListener(this);//将当前窗口注册为getProblem的ActionEvent事件监视器     
	      giveAnwser.addActionListener(this);//将当前窗口注册为giveAnwser的ActionEvent事件监视器
	      textResult.addActionListener(this);//将当前窗口注册为textResult的ActionEvent事件监视器
	      setBounds(100,100,550,100);
	      setVisible(true);
	      validate();
	      addWindowListener(new WindowAdapter()
	                        {  public void windowClosing(WindowEvent e)
	                           {  System.exit(0);
	                           }
	                        }
	                       );
	    }
	    public void actionPerformed(ActionEvent e) 
	    { if(e.getSource()==getProblem) //判断事件源是否是getProblem
	       { int number1=teacher.giveNumberOne(100);
	         int number2=teacher.giveNumberTwo(100);
	         String operator=teacher.giveOperator();
	         textOne.setText(""+number1);
	         textTwo.setText(""+number2); 
	         operatorLabel.setText(operator); 
	         message.setText("请回答");
	textResult.setText(null); 
	       }
	     if(e.getSource()==giveAnwser) //判断事件源是否是giveAnwser 
	       {  String answer=textResult.getText();
	          try{ 
	               int result=Integer.parseInt(answer); 
	               if(teacher.getRight(result)==true)
	               {  message.setText("你回答正确");
	               }
	               else
	               { message.setText("你回答错误");
	               }
	             }
	          catch(NumberFormatException ex)
	             {  message.setText("请输入数字字符");
	             }
	       }
	      textResult.requestFocus();
	      validate(); 
	   }
}

运行结果:



  • 6
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
好的,以下是一个简单的算术测试软件的示例代码: ```java import java.util.Scanner; import java.util.Random; public class ArithmeticTest { public static void main(String[] args) { Scanner input = new Scanner(System.in); Random random = new Random(); int correctCount = 0; // 记录答对的题目数量 final int NUMBER_OF_QUESTIONS = 5; // 题目数量 System.out.println("欢迎使用算术测试软件,共 " + NUMBER_OF_QUESTIONS + " 题,每题 10 分,总分 50 分。"); System.out.println("请依次作答下列题目:"); for (int i = 0; i < NUMBER_OF_QUESTIONS; i++) { int x = random.nextInt(10); int y = random.nextInt(10); int answer; // 随机生成加/减法运算符 String operator = random.nextBoolean() ? "+" : "-"; // 输出题目 System.out.print((i + 1) + ". " + x + " " + operator + " " + y + " = "); // 获取用户输入 answer = input.nextInt(); // 计算正确答案 int correctAnswer = operator.equals("+") ? x + y : x - y; // 判断答案是否正确 if (answer == correctAnswer) { System.out.println("答案正确!"); correctCount++; } else { System.out.println("答案错误,正确答案为:" + correctAnswer); } } // 输出测试结果 System.out.println("测试结束,您的得分为:" + correctCount * 10 + " 分。"); } } ``` 这个小软件会随机生成 5 道加/减法的算术题目,每道题目的数字在 0 到 9 之间随机生成。用户需要输入答案,程序会自动判断答案是否正确,然后输出分数。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

leihengxin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值