开发环境:eclipse
结对同伴 :罗凯杰
同伴博客:http://www.cnblogs.com/lkjie/
程序介绍:
生成单机带用户界面(不是控制台)的程序,单个题目最多不能超过4个运算符,操作数-100--100。
若用户输入答案正确,则提示正确;若答案错误,则提示错误,并要提示正确答案是多少。
扩展的方向:
1.可以出表达式里含有负整数(负整数最小不小于-100)的题目,且负数需要带括号,用户输入的结果不用带括号。如: 2*(-4) = -8
2.用户可以选择出题的个数(最多不能超过5个题目),答题结束可以显示用户答错的题目个数和答对的题目个数。
3.程序可以出单个整数阶乘的题目:如:4!=24。
4.程序可以设置皮肤功能,可以改变界面的颜色即可。
我的同伴主要完成扩展方向的3-4。程序的界面,由我们两个共同设计,调试位置。
收获:
这次的作业中,与同伴结对,效率挺高的,大家分工明确,一个人在写程序,另一个在提意见、找资料。一起工作乐趣无限。
源代码:
import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Size { public static void main(String[] args) { // TODO Auto-generated method stub myframe f=new myframe(); } } class myframe extends JFrame { JLabel L1=new JLabel("题目:"); JLabel L2=new JLabel("输入题目个数:"); JLabel L3=new JLabel("提示:"); JLabel L4=new JLabel(" "); //题目 JLabel L5=new JLabel("题目个数不能大于5"); //提示 JTextField T1=new JTextField(6); JButton B1=new JButton("开始"); JButton B2=new JButton("确认"); JButton B3=new JButton("下一题"); JButton B4=new JButton("换皮肤"); JPanel p1=new JPanel(); int n=0,a,b,c,d,j,k,l,m=0,p; double result; char[]h={'+','-','*','/'},h1={'(',')','!'}; String s1,s2; Color col[]={Color.blue,Color.green,Color.ORANGE,Color.PINK,Color.GRAY,Color.RED,Color.LIGHT_GRAY}; myframe(){ this.setTitle("四则运算"); this.setSize(300,280); this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); this.add(p1); p1.setLayout(null); L1.setBounds(50, 20, 90, 30); p1.add(L1); L4.setBounds(140, 20, 150, 30); p1.add(L4); L2.setBounds(50, 70, 90, 30); p1.add(L2); T1.setBounds(150, 70, 90, 30); p1.add(T1); B4.setBounds(100, 110, 90, 30); p1.add(B4); B1.setBounds(10, 150, 90, 30); p1.add(B1); B2.setBounds(100, 150, 90, 30); p1.add(B2); B2.setEnabled(false); B3.setBounds(190, 150,90,30); p1.add(B3); L3.setBounds(50, 200, 50, 30); B3.setEnabled(false); p1.add(L3); L5.setBounds(100, 200, 180, 30); p1.add(L5); this.setVisible(true); this.setLocationRelativeTo(null); B1.addActionListener(new B()); B2.addActionListener(new B()); B3.addActionListener(new B()); B4.addActionListener(new B()); } class B implements ActionListener { @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub if(e.getSource()==B1) { p=n=(int) Double.parseDouble(T1.getText()); //System.out.print(n); if(n>5||n<1) { JOptionPane.showMessageDialog(null,"输入的个数不能大于5或者小于1","注意",JOptionPane.INFORMATION_MESSAGE); } else { B1.setEnabled(false); B2.setEnabled(true); B3.setEnabled(true); L2.setText("输入答案 :"); L5.setText(null); T1.setText(null); star(); } } if(e.getSource()==B2) { l=(int) Double.parseDouble(T1.getText()); if(l==result) { m++; s2="答案正确!"; L5.setText(s2); } else{ s2="答案错误!答案为:"+String.valueOf(result); L5.setText(s2); } B2.setEnabled(false); } if(e.getSource()==B3) { if(n==0) { JOptionPane.showMessageDialog(null, "一共"+p+"道题目。正确的题数为:"+m,"成绩",JOptionPane.INFORMATION_MESSAGE); B1.setEnabled(true); B2.setEnabled(false); B3.setEnabled(false); L2.setText("输入题目个数:"); L4.setText(null); T1.setText(null); } else { L5.setText(null); T1.setText(null); star(); B2.setEnabled(true); } } if(e.getSource()==B4) { int i; i=(int)(Math.random()*6); p1.setBackground(col[i]); } } } void star() { a=(int) (Math.random()*200-100); b=(int) (Math.random()*200-100); c=(int) (Math.random()*200-100); d=(int) (Math.random()*200-100); j=(int) (Math.random()*4); k=(int) (Math.random()*4); if(d<0) { a=(int) (Math.random()*9+1); s1=String.valueOf(a)+String.valueOf(h1[2]); L4.setText(s1); result=1; for(int i=1;i<=a;i++) { result=result*i; } } else { if(b>=0&&c>=0) { s1=String.valueOf(a)+String.valueOf(h[j])+String.valueOf(b)+String.valueOf(h[k])+String.valueOf(c); L4.setText(s1); System.out.println(s1); } else if(b<0&&c>=0) { s1=String.valueOf(a)+String.valueOf(h[j])+String.valueOf(h1[0])+String.valueOf(b)+String.valueOf(h1[1])+String.valueOf(h[k])+String.valueOf(c); L4.setText(s1); System.out.println(s1); } else if(b>=0&&c<0) { s1=String.valueOf(a)+String.valueOf(h[j])+String.valueOf(b)+String.valueOf(h[k])+String.valueOf(h1[0])+String.valueOf(c)+String.valueOf(h1[1]); L4.setText(s1); System.out.println(s1); } else { s1=String.valueOf(a)+String.valueOf(h[j])+String.valueOf(h1[0])+String.valueOf(b)+String.valueOf(h1[1])+String.valueOf(h[k])+String.valueOf(h1[0])+String.valueOf(c)+String.valueOf(h1[1]); L4.setText(s1); System.out.println(s1); } if(k>1) //后面的计算符为乘除,先算后面两个数 { if(k==2) { result=b*c; } else if(k==3) { result=b/c; } if(j==0) { result=result+a; } else if(j==1) { result=a-result; } else if(j==2) { result=a*result; } else if(j==3) { result=a/result; } } else if(k<2) { if(j==0) { result=b+a; } else if(j==1) { result=a-b; } else if(j==2) { result=a*b; } else if(j==3) { result=a/b; } if(k==0) result=result+c; if(k==1) result=result-c; } } System.out.println(result); n--; } }
运行结果:
实验中~~~