用java语言做一个给小学生做运算测试的程序。

2024-11-02 16:43:52
推荐回答(3个)
回答1:

帮你做了一个界面的,别看很长,算法很简单,主要是界面比较复杂。
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class T2011_3_15 extends JFrame implements ActionListener{
JisuanPanel[] panels;
public T2011_3_15(){
super("100以内计算题");
panels=new JisuanPanel[20];
for(int i=0;i panels[i]=new JisuanPanel();
Container c=getContentPane();
c.setLayout(new BorderLayout());
JPanel panel=new JPanel(new GridLayout(10,2));
for(int i=0;i panel.add(panels[i]);
c.add(panel,BorderLayout.CENTER);

panel=new JPanel(new FlowLayout());
JButton button=new JButton("RESET");
button.addActionListener(this);
panel.add(button);
button=new JButton("JUDGE");
button.addActionListener(this);
panel.add(button);
c.add(panel,BorderLayout.SOUTH);
}
public void actionPerformed(ActionEvent e){
if(e.getActionCommand().equals("RESET")){
for(int i=0;i panels[i].init();
}
if(e.getActionCommand().equals("JUDGE")){
int n=0;
for(int i=0;i if(panels[i].right())
n++;
}
JOptionPane.showMessageDialog(null,"共做对"+n+"道!");
}
return;
}
public static void main (String[] args) {
JFrame frame=new T2011_3_15IN100();
frame.setBounds(50,50,400,500);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
class JisuanPanel extends JPanel{
JLabel label;
JTextField field;
int result;
public JisuanPanel(){
super();
label=new JLabel();
field=new JTextField(4);
add(label);
add(field);
init();
}
public void init(){
int a,b;
String fu;
a=(int)(Math.random()*100)+1;
b=(int)(Math.random()*100)+1;
switch((int)(Math.random()*4)){
case 0:fu="+";label.setText(""+a+fu+b+"=");result=a+b;break;
case 1:fu="-";label.setText(""+a+fu+b+"=");result=a-b;break;
case 2:fu="*";label.setText(""+a+fu+b+"=");result=a*b;break;
case 3:fu="/";label.setText(""+a+fu+b+"=");result=a/b;break;
default:JOptionPane.showMessageDialog(null,"出错!");System.exit(0);
}
if(result<0||result>100||a%b!=0)
init();
field.setText("");
return;
}
public boolean right(){
if(field.getText().equals(""))return false;
int num=result+1;
try{
num=Integer.parseInt(field.getText());
}catch(NumberFormatException e){
JOptionPane.showMessageDialog(null,"输入错误!");
field.setText("");
}
if(num==result){
if(!(label.getText()).startsWith("√"))
label.setText("√"+label.getText());
return true;
}
else return false;
}
}

回答2:

Math.random()函数可以用来生成随机数的。两个数字的生成都可以通过随机数生成。

符号可以放到数组中,然后随机生成数组的下标来确定运算符号。

----------------------

回答3:

0到100随机数:int a=(int)Math.random()*100+1
可以用在定义一个0到3随机数分别代表加减乘除中的一种:int b=(int)Math.random()*3+1
switch(b)
{
case 0:
加运算break;
case 1:
减运算break;
case 2:
乘运算break;
case 3:
除运算break;

}