四则运算

匿名 (未验证) 提交于 2019-12-02 23:26:52

四则运算

我把普通形式的运算,分数的运算和带括号的运算分成3种不同的情况,并写了关于分数计算约分的以及整除情况两个方法,通通写在main里面。
具体的main代码如下
import java.util.*;
public class Main {
public static void main(String[] args) {

    int n,i,level;     int d1=0,l=0,d2=0;     String d=null;     ArrayList<String> result1=new ArrayList<String>();     String question1=new String();     System.out.println("输入1选择整数计算式,输入2选择分数计算式,输入3选择带括号计算式");     Scanner scan1=new Scanner(System.in);     level=scan1.nextInt();     if(level==1){         System.out.println("请输入数量");         Scanner scan2=new Scanner(System.in);         n=scan2.nextInt();         int answer[]=new int [n];         System.out.println("2017013466");         for(i=0;i<n;i++){             int a=(int)(Math.random()*100);//随机生成一个1-10的整数             int b=(int)(Math.random()*100);//随机生成一个1-10的整数             a>b             int e=(int)(Math.random()*100);//随机生成一个1-10的整数             if(b>a){                 int temp=a;                 a=b;                 b=temp;             }             int c=(int)(Math.random()*4);//随机生成一个1-4的整数,0表示加法,1表示减法,2表示乘法,3表示除法,             if(c==0)             {                 d1=a+b+e;                 question1=a+"+"+b+"+"+e;             }             if(c==1)             {                 d1=a-b+e;                 question1=a+"-"+b+"+"+e;             }             if(c==2)             {                 d1=a*b*e;                 question1=a+"*"+b+"*"+e;             }             if(c==3)             {                 b=zhengchu(a, b);                 d1=a/b+e;                 question1=a+"/"+b+"+"+e;             }             answer[i]=d1;             result1.add(question1+"="+d1);         }         //测试输出list的值         for ( int k = 0; k < result1.size(); k++){             System.out.println(result1.get(k));         }         WriteToFile write=new WriteToFile("src/result.txt",result1);         System.out.println("写入成功!");     }     if(level==2){         System.out.println("请输入题目的数量");         Scanner scan2=new Scanner(System.in);         n=scan2.nextInt();         String answer[]=new String [n];         ArrayList<String> result2=new ArrayList<String>();         String question2=new String();         int M,N;         int b1,b2,a1,a2;         System.out.println("2017013466");         for(i=0;i<n;i++){             a1=1+(int)(Math.random()*10);//随机生成一个小于B的分母             b1=1+(int)(Math.random()*a1);//生成一个比分母小的分子,实现真分数             a2=1+(int)(Math.random()*10);//随机生成一个小于B的分母             b2=1+(int)(Math.random()*a2);//生成一个比分母小的分子,实现真分数             int c=(int)(Math.random()*3);//生成运算符             if(c==0){                 N=b1*a2+b2*a1;                 M=a1*a2;                 d=fenshu(N,M);                 question2=b1+"/"+a1+"+"+b2+"/"+a2;             }             if(c==1){                 N=b1*a2-b2*a1;                 M=a1*a2;                 d=fenshu(N,M);                 question2=b1+"/"+a1+"-"+b2+"/"+a2;             }             if(c==2){                 N=b1*b2;                 M=a1*a2;                 d=fenshu(N,M);                 question2=b1+"/"+a1+"*"+b2+"/"+a2;             }             if(c==3){                 N=a1*b2;                 M=a2*b1;                 d=fenshu(N,M);                 question2=b1+"/"+a1+"/"+b2+"/"+a2;             }             answer[i]=d;             result2.add(question2+"="+d);         }         //测试输出list的值         for ( int k = 0; k < result2.size(); k++){             System.out.println(result2.get(k));         }         WriteToFile write=new WriteToFile("src/result.txt",result2);         System.out.println("写入成功!");     }     if(level==3){          System.out.println("请输入数量");         Scanner scan3=new Scanner(System.in);         n=scan3.nextInt();         int answer[]=new int [n];         ArrayList<String> result3=new ArrayList<String>();         String question3=new String();         System.out.println("2017013466");         for(i=0;i<n;i++){             int a=(int)(Math.random()*100);//随机生成一个1-10的整数             int b=(int)(Math.random()*100);//随机生成一个1-10的整数             a>b             int e=(int)(Math.random()*100);//随机生成一个1-10的整数             if(b>a){                 int temp=a;                 a=b;                 b=temp;             }             int c=(int)(Math.random()*4);//随机生成一个1-4的整数,0表示加法,1表示减法,2表示乘法,3表示除法,             if(c==0)                 if(c==0)                 {                     d2=(a+b)+e;                     question3="("+a+"+"+b+")"+"+"+e;                 }             if(c==1)             {                 d2=(a-b)+e;                 question3="("+a+"-"+b+")"+"+"+e;             }             if(c==2)             {                 d2=a*(b*e);                 question3=a+"*"+"("+b+"*"+e+")";             }             if(c==3)             {                 b=zhengchu(a, b);                 l=(a/b);                 d2=l+e;                 question3="("+a+"/"+b+")"+"+"+e;             }             answer[i]=d2;             result3.add(question3+"="+d2);         }         //测试输出list的值         for ( int k = 0; k < result3.size(); k++){             System.out.println(result3.get(k));         }         WriteToFile write=new WriteToFile("src/result.txt",result3);         System.out.println("写入成功!");     } }  private static int zhengchu(int x,int y){//通过递归实现整除     Random random=new Random();     if(x%y!=0){         y=random.nextInt(100)+1;         return zhengchu(x,y);     }     else{         return y;     } } public static String fenshu(int a,int b){     int y = 1;     for(int i=a;i>=1;i--){         if(a%i==0&&b%i==0){             y = i;             break;         }     }     int z = a/y;     int m = b/y;     if(z==0) {         return "0";     }     return ""+z+"/"+m; }

}
然后就是写入文件了,这里我写了WriteToFile

public class WriteToFile {

    public WriteToFile(String path,ArrayList<String> Main) {     try {         BufferedWriter bw = new BufferedWriter(new FileWriter(path));         bw.write("2017013466");         bw.newLine();         for(String data:Main){             bw.write(data);             bw.newLine();         }         bw.close();     } catch (IOException e1) {         // TODO Auto-generated catch block         e1.printStackTrace();     } }

}

转载请标明出处:四则运算
文章来源: https://blog.csdn.net/qq_42835165/article/details/88852252
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!