/* (程序頭部註釋開始)
* 程序的版權和版本聲明部分
* Copyright (c) 2011, 煙臺大學計算機學院學生
* All rights reserved.
* 文件名稱: 編寫一個算術測試小軟件。
* 版 本 號: V1.0
* 對任務及求解方法的描述部分
* 輸入描述:程序組成:編寫 一個Teacher類負責給出算術題目,隨機給出兩個整數並進行運算,並判斷回答者的答案是否正確;
* 輸入描述:編寫一個GUI類ComputerFrame,回答者可以通過GUI看到題目並給出答案;編寫一個程序執行入口運行該軟件。
* 輸入描述:GUI界面如下所示。
* 問題描述:
* 程序輸出:
* 程序頭部的註釋結束
*/
package ma; public class TestMain { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub ComputerFrame frame = new ComputerFrame("算術測試"); } }
package ma;
public class Teacher{
int numberone,numbertwo;
String operator=" ";
boolean right;
public int getnumberone()
{
numberone= (int) (Math.random()*100);
return numberone;
}
public int getnumbertwo()
{
numbertwo= (int) (Math.random()*100+1);
return numbertwo;
}
public String getoperator()
{
int i=(int)(Math.random()*10+1);
if(i>0&&i<=3)
{
operator="+";
}
if(i>3&&i<=5)
{
operator="-";
}
if(i>5&&i<=8)
{
operator="*";
}
if(i>8&&i<=11)
{
operator="/";
}
return operator;
}
public boolean check(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;
}
else 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;
}
}
package ma;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
@SuppressWarnings("serial")
public class ComputerFrame extends JFrame implements ActionListener{
Teacher teacher;
TextField text1,text2,textresult;
Button getquestion,ensureanswer;
Label label1,labelanswer,label2;
ComputerFrame(String s)
{
super(s);//命名
teacher = new Teacher();
setLayout(new FlowLayout());
getquestion= new Button("獲取題目");
text1 = new TextField(10);//創建textOne,其可見字符長是10
text2 = new TextField(10);
textresult= new TextField(10);
label1= new Label("+");
label2= new Label ("=");
labelanswer= new Label("你還沒有答案呢 ?");
ensureanswer= new Button("確認答案");
add(getquestion);
add(text1);
add(label1);
add(text2);
add(label2);
add(textresult);
add(getquestion);
add(ensureanswer);
add(labelanswer);
// textresult.requestFocus();
text1.setEditable(false);//該方法設置文本框的可編輯性
text2.setEditable(false);
getquestion.addActionListener(this);//將當前窗口註冊爲getquestion的ActionEvent事件監視器
ensureanswer.addActionListener(this);
textresult.addActionListener(this);
setBounds(100,100,450,100);//設置出現屏幕上時的初始位置
setLocationRelativeTo(null);//居中
setVisible(true);//窗口的可見性
validate();
}
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource()==getquestion)
{
int numberone= teacher.getnumberone();
int numbertwo= teacher.getnumbertwo();
String operator = teacher.getoperator();
text1.setText(""+numberone);//設置文本框中爲參數字符串指定的文本
text2.setText(""+numbertwo);
label1.setText(operator);
labelanswer.setText("請回答");
textresult.setText(null);
}
if(e.getSource()==ensureanswer)
{
String answer = textresult.getText();
try{ int result = Integer.parseInt(answer);
if(teacher.check(result)==true){
labelanswer.setText("你回答正確");
}
else{
labelanswer.setText("你回答錯誤");
}
}
catch(NumberFormatException x){
labelanswer.setText("請輸入數字字符");
}
//textresult.requestFocus();
validate();//確保組件具有有效的佈局
}
}
}