码迷,mamicode.com
首页 > 其他好文 > 详细

20150401 作业2 结对 四则运算

时间:2015-04-09 19:37:00      阅读:198      评论:0      收藏:0      [点我收藏+]

标签:

结对 四则运算

编译环境:eclipse

开发人员:de

开发时间:2015-04-07

实现功能:

    1.基本的加减乘除

    2.每次出1道题目,提交后会显示是否答对,如果错了,还会出现正确答案

       3.题目是随机的

    4.能出于分数相关的运算以及可以输入真分数

       5.可以控制题目的数量

缺点:

    1.分数计算的答案输入分数格式才显示正确

    2.不能用户选择做什么运算

      3.还不能统计答题的时间

      4.不能统计答题正确的数目

           ......

个人体会:

    1.能力还是不足,一些东西想到了却不能实现

    2.要多点和伙伴讨论

    3.对于Java的基础不够熟

伙伴的博客链接:http://www.cnblogs.com/zsb1/


界面:    
技术分享
     

测试结果:技术分享      技术分享

 

 

源代码:

package rjgc;
import java.io.*;
import java.math.RoundingMode;
import java.text.DecimalFormat;
import java.util.*;
import java.util.regex.Pattern;
import java.awt.*;
import java.awt.event.*;

import javax.swing.*;

import java.math.*;
public class Rj11 {

    public static void main(String[] args) {
        MyFrame frame=new MyFrame();

    }
}
class MyFrame extends JFrame{
    private JLabel L1=new JLabel("题目数");
    private JLabel L2=new JLabel("题目是");
    private JLabel L3=new JLabel("答案是");
    JTextField T1 = new JTextField(15);
    JTextField T2 = new JTextField(15);
    JTextField T3 = new JTextField(5);
    JTextField T4 = new JTextField(20);
    JButton B4=new JButton("确定");
    JButton B1=new JButton("开始");
    JButton B2=new JButton("提交");
    JButton B3=new JButton("下一题");
    MyFrame(){
        this.setTitle("求平方");
        this.setSize(400, 250);
        this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        this.getContentPane().setBackground(Color.white);
        FlowLayout flow=new FlowLayout(FlowLayout.LEFT,10,15);
        this.setLayout(flow);
        B4.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e){
                Pattern pa = Pattern.compile("[0-9]*");
                String s1=T1.getText();
                if(pa.matcher(s1).matches())//检测用户输入是否正确
                {
                    try
                    {
                        int number=Integer.parseInt(s1);
                        File dir=new File("d:number");
                        if(!dir.exists())
                        {
                            dir.mkdir();
                        }
                        File afile=new File(dir,"data.txt");
                        afile.createNewFile();
                        BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(new FileOutputStream(afile)));
                        bw.write(String.valueOf(s1));
                        bw.close();
                    }
                    catch(IOException t)
                    {
                        T4.setText("IO exception thrown:"+t);
                    }
                }
                else
                {
                    T1.setText("输入的格式错误请重新输入!");
                }
            }
        });
        B1.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent y){
                DecimalFormat df=new DecimalFormat("#.00");
                df.setRoundingMode(RoundingMode.HALF_UP);
                char[]ch={‘+‘,‘-‘,‘*‘,‘/‘};
                int c = 0;
                int d=0;
                int h=0;
                int f=0;
                int e=0;
                double answer;
                double ans;
                int right=0;
                int number;
                try
                {
                    File dir1=new File("d:number");
                    File afile1=new File(dir1,"data.txt");
                    BufferedReader br1=new BufferedReader(new InputStreamReader(new FileInputStream(afile1)));
                    String strRead1=br1.readLine();
                    number=Integer.parseInt(strRead1);
                    if(number>=1)
                    {
                        int n = new Random().nextInt(5);//获取运算的方式0—— +    1—— -    2—— *    3—— /
                        if(n==0 || n==2 || n==3 || n==1)//int型的运算
                        {

                            double a1 = new Random().nextDouble()*100;//获取式子的运算随机数
                            double a=Double.parseDouble(df.format(a1));
                            double b1 =new Random().nextDouble()*100+1;//除数不能为0
                            double b=Double.parseDouble(df.format(b1));
                            T2.setText(a+""+ch[n]+""+b+"=");//输出式子

                            if(n==0)//加法
                            {    
                                answer=a+b;
                                answer=Double.parseDouble(df.format(answer));//保留两位小数
                                String dirName1="d:MyData";
                                try
                                {
                                    File dir=new File(dirName1);
                                    if(!dir.exists())
                                    {
                                        dir.mkdir();
                                    }
                                    File afile=new File(dir,"data.txt");
                                    afile.createNewFile();
                                    BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(new FileOutputStream(afile)));
                                    bw.write(String.valueOf(answer));
                                    bw.close();
                                }
                                catch(IOException t)
                                {
                                    T4.setText("IO exception thrown:"+t);
                                }
                            }
                            else if(n==1)//减法
                            {    
                                answer=a-b;
                                answer=Double.parseDouble(df.format(answer));//保留两位小数
                                String dirName1="d:MyData";
                                try
                                {
                                    File dir=new File(dirName1);
                                    if(!dir.exists())
                                    {
                                        dir.mkdir();
                                    }
                                    File afile=new File(dir,"data.txt");
                                    afile.createNewFile();
                                    BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(new FileOutputStream(afile)));
                                    bw.write(String.valueOf(answer));
                                    bw.close();
                                }
                                catch(IOException t)
                                {
                                    T4.setText("IO exception thrown:"+t);
                                }
                            }
                            else if(n==2) //乘法
                            {    
                                answer=a*b;
                                answer=Double.parseDouble(df.format(answer));//保留两位小数
                                String dirName1="d:MyData";
                                try
                                {
                                    File dir=new File(dirName1);
                                    if(!dir.exists())
                                    {
                                        dir.mkdir();
                                    }
                                    File afile=new File(dir,"data.txt");
                                    afile.createNewFile();
                                    BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(new FileOutputStream(afile)));
                                    bw.write(String.valueOf(answer));
                                    bw.close();
                                }
                                catch(IOException t)
                                {
                                    T4.setText("IO exception thrown:"+t);
                                }
                            }
                            else if(n==3)  //除法
                            {    

                                ans=Double.parseDouble(df.format(a/b));//保留两位小数
                                String dirName1="d:MyData";
                                try
                                {
                                    File dir=new File(dirName1);
                                    if(!dir.exists())
                                    {
                                        dir.mkdir();
                                    }
                                    File afile=new File(dir,"data.txt");
                                    afile.createNewFile();
                                    BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(new FileOutputStream(afile)));
                                    bw.write(String.valueOf(ans));
                                    bw.close();
                                }
                                catch(IOException t)
                                {
                                    T4.setText("IO exception thrown:"+t);
                                }
                            }
                        }
                        else if(n==4)//含有真分数的运算
                        {
                            double fm=0;
                            double fz=0;
                            double MaxD;
                            String str1;//最简分式
                            boolean t = true;
                            while(t==true)//判断并输出真分数
                            {
                                c = new Random().nextInt(10);
                                d =new Random().nextInt(10);//获取式子的运算随机数
                                if(c<d)
                                    t=false;
                            }
                            t=true;
                            while(t==true)//判断并输出真分数
                            {
                                e =new Random().nextInt(10)+1;
                                f =new Random().nextInt(10);//获取式子的运算随机数
                                if(e<f)
                                    t=false;

                            }
                            n=new Random().nextInt(4);
                            T2.setText("("+c+"/"+d+")"+ch[n]+"("+e+"/"+f+")"+"=");
                            if(n==0)//加法
                            {  
                                fm=d*f;
                                fz=(c*f)+(e*d);
                                //简化约分
                                MaxD=getMaxDivi(fz,fm);//最大公约数
                                fz=fz/MaxD;
                                fm=fm/MaxD;

                                //double不保留小数
                                //简化完毕
                                //标准答案
                                str1=(int)fz+"/"+(int)fm;//得出最简答案
                                ans=Double.parseDouble(df.format(fz/fm));
                                String dirName1="d:MyData";
                                try
                                {
                                    File dir=new File(dirName1);
                                    if(!dir.exists())
                                    {
                                        dir.mkdir();
                                    }
                                    File afile=new File(dir,"data.txt");
                                    afile.createNewFile();
                                    BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(new FileOutputStream(afile)));
                                    bw.write(str1);
                                    bw.close();
                                }
                                catch(IOException t1)
                                {
                                    T4.setText("IO exception thrown:"+t);
                                }
                            }
                            else if(n==1)//减法
                            {    
                                fm=d*f;
                                fz=(c*f)-(e*d);
                                MaxD=getMaxDivi(fz,fm);
                                fz=fz/MaxD;
                                fm=fm/MaxD; 
                                if(fz<0||fm<0)
                                {
                                    fz=-(Math.abs(fz));
                                    fm=Math.abs(fm);

                                }
                                str1=(int)fz+"/"+(int)fm;//正确答案的String
                                String dirName1="d:MyData";
                                try
                                {
                                    File dir=new File(dirName1);
                                    if(!dir.exists())
                                    {
                                        dir.mkdir();
                                    }
                                    File afile=new File(dir,"data.txt");
                                    afile.createNewFile();
                                    BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(new FileOutputStream(afile)));
                                    bw.write(str1);
                                    bw.close();
                                }
                                catch(IOException t1)
                                {
                                    T4.setText("IO exception thrown:"+t);
                                }
                            }
                            else if(n==2)//乘法
                            {    
                                fz=c*e;
                                fm=d*f;
                                MaxD=getMaxDivi(fz,fm);
                                fz=fz/MaxD;
                                fm=fm/MaxD;

                                str1=(int)fz+"/"+(int)fm;//正确答案的String
                                String dirName1="d:MyData";
                                try
                                {
                                    File dir=new File(dirName1);
                                    if(!dir.exists())
                                    {
                                        dir.mkdir();
                                    }
                                    File afile=new File(dir,"data.txt");
                                    afile.createNewFile();
                                    BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(new FileOutputStream(afile)));
                                    bw.write(str1);
                                    bw.close();
                                }
                                catch(IOException t1)
                                {
                                    T4.setText("IO exception thrown:"+t);
                                }
                            }
                            else if(n==3)//除法
                            {    
                                fz=c*f;
                                fm=d*e;
                                MaxD=getMaxDivi(fz,fm);
                                fz=fz/MaxD;
                                fm=fm/MaxD;

                                str1=(int)fz+"/"+(int)fm;//正确答案的String
                                String dirName1="d:MyData";
                                try
                                {
                                    File dir=new File(dirName1);
                                    if(!dir.exists())
                                    {
                                        dir.mkdir();
                                    }
                                    File afile=new File(dir,"data.txt");
                                    afile.createNewFile();
                                    BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(new FileOutputStream(afile)));
                                    bw.write(str1);
                                    bw.close();
                                }
                                catch(IOException t1)
                                {
                                    T4.setText("IO exception thrown:"+t);
                                }
                            }
                        }
                        number--;
                        String ss=String.valueOf(number);
                        File dir=new File("d:number");
                        File afile=new File(dir,"data.txt");
                        BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(new FileOutputStream(afile)));
                        bw.write(String.valueOf(ss));
                        bw.close();
                    }
                    else
                    {
                        T4.setText("");
                    }
                }
                catch(IOException t)
                {
                    T4.setText("IO exception thrown:"+t);
                }            
            }
        });
        B2.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e){
                int n;
                int n1;
                String dirName="d:MyData";
                String filename="data.txt";
                String filename1="data1.txt";
                try{
                    File dir=new File(dirName);
                    File afile=new File(dir,filename);
                    BufferedReader br=new BufferedReader(new InputStreamReader(new FileInputStream(afile)));
                    String strRead=br.readLine();
                    if(strRead.equals(T3.getText()))
                    {
                        
                        T4.setText("恭喜,你答对了!");
                    }
                    else
                    {
                        
                        T4.setText("对不起,你答错了!正确答案为:"+strRead);
                    }

                }
                catch(IOException t)
                {
                    T4.setText("IO exception thrown:"+t);
                }

            }

        });
        add(L1);add(T1);add(B4);add(B1);add(L2);add(T2);add(T3);add(B2);add(L3);add(T4);
        this.setResizable(false);
        this.setVisible(true);
    }
    static double getMaxDivi(double a,double b)//求最大公约数,运用辗转相除法
    {
        double maxdivd=0;
        if(a==0||b==0)
        {
            maxdivd=1;
            return maxdivd;
        }
        else 
        {
            if(a<b)
                getMaxDivi(b,a);
            boolean value=false;
            if(a==0)
            {
                maxdivd=1;
                value=true;
            }

            while(value==false)
            {
                int n=(int) (a/b);
                int m=(int) (a%b);
                if(m==0)
                {
                    maxdivd=b;
                    value=true;
                }
                else
                {
                    a=b;
                    b=m;
                }
            }
        }    
        return maxdivd;
    }
}

 

20150401 作业2 结对 四则运算

标签:

原文地址:http://www.cnblogs.com/kong21/p/4410430.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!