软件工程个人作业01

 

    

     思路:

                   定义俩String类型数组,用数组来存储每道题,然后利用Random和Scanner,完成有效的四则运算即可。

  源代码:

//2017.3.6   严鹏     20153314
package dome;
import java.util.Random;
import java.util.Scanner;
public class Add1 {
    public static void main(String[] args)
    {
        Random random=new Random();
        Scanner sr=new Scanner(System.in);
        System.out.println("请输入作业数量:");
        int n=sr.nextInt();
        System.out.println("1.整数运算      2.真分数运算");
        int n1=sr.nextInt();
        String[] s1 = new String[n];
        String[] s2 = new String[n];
        s1=Zsjs(n);
        s2=Zfsjs(n);
        if(n1==1)        
        {
            for(int i = 0;i < n;i++) {
                String[] t = s1[i].split("=");  //分割字符串,用来取值判等
                System.out.print((i + 1) + " : " + t[0] + " = " + "( )");
                String r = sr.next();
                if(r.equals(t[1])){
                    System.out.println("回答正确!");
                }else{
                    System.out.println("回答错误! "+t[1]);
                }
            }
        }
        else
        {    
           for(int i = 0;i < n;i++) {
            String[] t = s2[i].split("=");
            System.out.print((i + 1) + " : " + t[0] + "=" + "( )");
            String r = sr.next();
            if(r.equals(t[1])){
                System.out.println("回答正确!");
            }else{
                System.out.println("回答错误!"+t[1]);
            }
               }
        }
            
        /*int a=100,b=4;
        int n=0;
        int[] s1=new int[100];
        int[] s2=new int[100];
        while(n!=30){
        
        int a1=random.nextInt(a)+1;
        int a2=random.nextInt(a)+1;
        int b1=random.nextInt(b)+1;
        s1[n]=a1;s2[n]=a2;
        {
        
             if(b1==1)
                 {System.out.println(a1+"+"+a2+"=");n++;}
                 else if(b1==2)
                 { System.out.println(a1+"-"+a2+"=");n++;}
                 else if(b1==3)
                 { System.out.println(a1+"*"+a2+"=");n++;}
                 else
                 { System.out.println(a1+"/"+a2+"=");n++;}
              
            
        }
        }*/
    }
    //真分数计算式

        public static String[] Zfsjs(int n) {
            int x,y,z,a,b,i = 0;
            String[] ss = new String[n];
            String t = "";
            Random sr = new Random();
            
            while(i < n) {
                a = sr.nextInt(100);
                b = sr.nextInt(100);
                
                
                
                if(a != 0 && b != 0){
                    x = sr.nextInt(a);
                    y = sr.nextInt(b);
                    z = sr.nextInt(4);
                    t = "";
                    if(y != 0){
                        if(z == 0) {
                            if((x * b + y * a) < (a * b))
                                t = "" + Yj(x, a) + " + " + Yj(y, b) + "=" + Yj((x * b + y * a), (a * b));
                        
                        }else if(z == 1) {
                            if((x * b - y * a) >= 0 && (x * b - y * a) < (a * b))
                                t = "" + Yj(x, a) + " - " +  Yj(y, b) + "=" +  Yj((x * b - y * a), (a * b));
                        
                        }else if(z == 2) {
                            if((x * y) < (a * b))
                                t = "" +  Yj(x, a) + " * " +  Yj(y, b) + "=" +  Yj((x * y),(a * b));
                        
                        }else{
                            if((y / b) != 0){
                                if((x * b) < (a * y))
                                    t = "" + Yj(x, a) + " / " +  Yj(y, b) + "=" +  Yj((x * b),(a * y));
                            }
                        }
                        if((!t.equals("")) && check(ss,t,i)){
                            ss[i++] = t;
                        }
                    }
                }
            }
            return ss;
        }
        
        //生成整数计算式

        public static String[] Zsjs(int n) {
            int a1,a2,z,i = 0;
            String[] ss = new String[n];
            String t = "";
            Random rd = new Random();
            while(i < n) {
                a1 = rd.nextInt(100);
                a2 = rd.nextInt(100);
                z = rd.nextInt(4);
                
                    if(z == 0) {
                        t = "" + a1 + " + " + a2  + "=" + (a1 + a2);
                        
                    }else if(z == 1 && a1 >= a2) {
                        t = "" + a1 + " - " + a2  + "=" + (a1 - a2);
                        
                    }else if(z == 2) {
                        t = "" + a1 + " * " + a2  + "=" + (a1 * a2);
                        
                    }else{
                        if(a2 != 0){
                            if(a1 % a2 == 0)
                                t = "" + a1 + " / " + a2  + "=" + (a1 / a2);
                        }
                    }
                    
                    if(check(ss,t,i)){
                        ss[i++] = t;
                    }
                
            }
            return ss;
        }
        
        //约简分子分母,如果分子为0则返回0
        public static String Yj(int a,int b){
            
            int d;
            int ac = a,bc = b;
            if(a == 0)
                return "0";
            while(a != b - a){
                d = b - a;
                if(a > d){
                    b = a;
                    a = d;
                }else{
                    b = d;
                }
            }
            d = a;
            int z = ac / d;
            int m = bc / d;
            return "" + z + "/" + m;
        }
        
        //检测是否重复

        public static boolean check(String[] s,String m,int n) {
            for(int i = 0;i < n;i++) {
                if(s[i].equals(m)){
                    return false;
                }
            }
            return true;
        }
    
}

 

 

 

 

 运行结果截图:

 

 

 

posted @ 2017-03-06 17:29  夜与清风  阅读(149)  评论(0编辑  收藏  举报