(第二周)新小學四則運算


結對項目:成員:黃興、謝孝淼

需求分析

1、選擇答題數目

2、隨機生成4個100以內的整數

3、隨機生成3個運算符

4、使用for循環生成指定數量的題目,並進行作答

5、輸入結果與計算結果進行判斷

    若結果一致,則回答正確,繼續下一題

    若結果不一致,則回答錯誤,並顯示正確答案,繼續答題

    直到完成指定數量的題目,並輸出答對題目數量及題目總數。

4、在選擇開始下一輪或結束答題時,若連續兩次輸入錯誤,則答題結束

 

https: https://git.coding.net/yanzouzhe/szys.git

SSH:   git@git.coding.net:yanzouzhe/szys.git

功能實現

1、指定題目數量h、並用result存儲結果,right統計回答正確的題目數量

System.out.println("*******隨機四則運算*******");
        Scanner sc = new Scanner(System.in);   //創建Scanner類的對象
        System.out.println("請輸入題目數量:");
        int h = sc.nextInt();                  
        double result = 0;
        int right=0;                           //統計正確題目的數量

2、用for循環生成指定數量的題目,用random()生成隨機整數和運算符,在此不考慮效能的問題,只求能出結果,用比較笨的方法,用switch,case列出所有64種可能並對結果進行判斷並統計回答正確的題目數

for(int m=0;m<h;m++){                   //for循環用來生成指定數量的題目
            Random r = new Random();               //生成一個100以內隨機數的方法
            int a = r.nextInt(100);
            int b = r.nextInt(100);
            int c = r.nextInt(100);
            int d = r.nextInt(100);
            Random r2 = new Random();
            int i = r2.nextInt(3) + 1;             //另一個生成隨機數1~4的方法
            int j = r2.nextInt(3) + 1;               //另一個生成隨機數1~4的方法
            int k = r2.nextInt(3) + 1;               //另一個生成隨機數1~4的方法
            char chrs[] = { '+', '-', '*', '/' };  //將運算符號存到數組里
            String.valueOf(chrs[i]);
            String.valueOf(chrs[j]);
            String.valueOf(chrs[k]);
            //用switch,case對三個運算符進行判斷,方法比較笨,列出了全部64種情況                       
            switch(i){                           
                case 1:{
                        switch(j){
                            case 1:{
                                    switch(k){
                                        case 1:System.out.println(a+"+"+b+"+"+c+"+"+d+"=?");
                                                result=a+b+c+d;
                                                break;
                                        case 2:System.out.println(a+"+"+b+"+"+c+"-"+d+"=?");
                                                result=a+b+c-d;
                                                break;
                                        case 3:System.out.println(a+"+"+b+"+"+c+"*"+d+"=?");
                                                result=a+b+c*d;
                                                break;
                                        case 4:System.out.println(a+"+"+b+"+"+c+"/"+d+"=?");
                                                float f = c;
                                                float g = d;
                                                if(g!=0){
                                                    result =a+b+f/g;    
                                                }
                                                break;
                                    }
                            }
                            break;
                            case 2:{
                                    switch(k){
                                        case 1:System.out.println(a+"+"+b+"-"+c+"+"+d+"=?");
                                                result=a+b-c+d;
                                                break;
                                        case 2:System.out.println(a+"+"+b+"-"+c+"-"+d+"=?");
                                                result=a+b-c-d;
                                                break;
                                        case 3:System.out.println(a+"+"+b+"-"+c+"*"+d+"=?");
                                                result=a+b-c*d;
                                                break;
                                        case 4:System.out.println(a+"+"+b+"-"+c+"/"+d+"=?");
                                                float f = c;
                                                float g = d;
                                                if(g!=0){
                                                    result =a+b-f/g;    
                                                }
                                                break;
                                    }
                            }
                            break;
                            case 3:{
                                    switch(k){
                                        case 1:System.out.println(a+"+"+b+"*"+c+"+"+d+"=?");
                                                result=a+b*c+d;
                                                break;
                                        case 2:System.out.println(a+"+"+b+"*"+c+"-"+d+"=?");
                                                result=a+b*c-d;
                                                break;
                                        case 3:System.out.println(a+"+"+b+"*"+c+"*"+d+"=?");
                                                result=a+b*c*d;
                                                break;
                                        case 4:System.out.println(a+"+"+b+"*"+c+"/"+d+"=?");
                                                float f = c;
                                                float g = d;
                                                if(g!=0){
                                                    result =a+b*f/g;    
                                                }
                                                break;
                                    }
                            }
                            break;
                            case 4:{
                                    switch(k){
                                        case 1:System.out.println(a+"+"+b+"/"+c+"+"+d+"=?");
                                                float f1 = b;
                                                float g1 = c;
                                                if(g1!=0){
                                                    result =a+f1/g1+d;    
                                                }
                                                break;
                                        case 2:System.out.println(a+"+"+b+"/"+c+"-"+d+"=?");
                                                float f2 = b;
                                                float g2 = c;
                                                if(g2!=0){
                                                    result =a+f2/g2-d;    
                                                }
                                                break;
                                        case 3:System.out.println(a+"+"+b+"/"+c+"*"+d+"=?");
                                                float f3 = b;
                                                float g3 = c;
                                                if(g3!=0){
                                                    result =a+f3/g3*d;    
                                                }
                                                break;
                                        case 4:System.out.println(a+"+"+b+"/"+c+"/"+d+"=?");
                                                float f4 = b;
                                                float g4 = c;
                                                float p4 = d;
                                                if(g4!=0 && p4!=0){
                                                    result =a+f4/g4/p4;    
                                                }
                                                break;
                                    }
                            }
                            break;
                        }
                }
                break;
                case 2:{
                        switch(j){
                            case 1:{
                                    switch(k){
                                        case 1:System.out.println(a+"-"+b+"+"+c+"+"+d+"=?");
                                                result=a-b+c+d;
                                                break;
                                        case 2:System.out.println(a+"-"+b+"+"+c+"-"+d+"=?");
                                                result=a-b+c-d;
                                                break;
                                        case 3:System.out.println(a+"-"+b+"+"+c+"*"+d+"=?");
                                                result=a-b+c*d;
                                                break;
                                        case 4:System.out.println(a+"-"+b+"+"+c+"/"+d+"=?");
                                                float f = c;
                                                float g = d;
                                                if(g!=0){
                                                    result =a-b+f/g;    
                                                }
                                                break;
                                    }
                            }
                            break;
                            case 2:{
                                    switch(k){
                                        case 1:System.out.println(a+"-"+b+"-"+c+"+"+d+"=?");
                                                result=a-b-c+d;
                                                break;
                                        case 2:System.out.println(a+"-"+b+"-"+c+"-"+d+"=?");
                                                result=a-b-c-d;
                                                break;
                                        case 3:System.out.println(a+"-"+b+"-"+c+"*"+d+"=?");
                                                result=a-b-c*d;
                                                break;
                                        case 4:System.out.println(a+"-"+b+"-"+c+"/"+d+"=?");
                                                float f = c;
                                                float g = d;
                                                if(g!=0){
                                                    result =a-b-f/g;    
                                                }        
                                                break;
                                    }
                            }
                            break;
                            case 3:{
                                switch(k){
                                        case 1:System.out.println(a+"-"+b+"*"+c+"+"+d+"=?");
                                                result=a-b*c+d;
                                                break;
                                        case 2:System.out.println(a+"-"+b+"*"+c+"-"+d+"=?");
                                                result=a-b*c-d;
                                                break;
                                        case 3:System.out.println(a+"-"+b+"*"+c+"*"+d+"=?");
                                                result=a-b*c*d;
                                                break;
                                        case 4:System.out.println(a+"-"+b+"*"+c+"/"+d+"=?");
                                                float f = c;
                                                float g = d;
                                                if(g!=0){
                                                    result =a-b*f/g;    
                                                }
                                                break;
                                }
                            }
                            break;
                            case 4:{
                                switch(k){
                                        case 1:System.out.println(a+"-"+b+"/"+c+"+"+d+"=?");
                                                float f1 = b;
                                                float g1 = c;
                                                if(g1!=0){
                                                    result =a-f1/g1+d;    
                                                }
                                                break;
                                        case 2:System.out.println(a+"-"+b+"/"+c+"-"+d+"=?");
                                                float f2 = b;
                                                float g2 = c;
                                                if(g2!=0){
                                                    result =a-f2/g2-d;    
                                                }
                                                break;
                                        case 3:System.out.println(a+"-"+b+"/"+c+"*"+d+"=?");
                                                float f3 = b;
                                                float g3 = c;
                                                if(g3!=0){
                                                    result =a-f3/g3*d;    
                                                }
                                                break;
                                        case 4:System.out.println(a+"-"+b+"/"+c+"/"+d+"=?");
                                                float f4 = b;
                                                float g4 = c;
                                                float p4 = d;
                                                if(g4!=0 && p4!=0){
                                                    result =a-f4/g4/p4;    
                                                }
                                                break;
                                }
                            }
                            break;
                        }
                }
                break;
                case 3:{    
                        switch(j){
                            case 1:{
                                    switch(k){
                                        case 1:System.out.println(a+"*"+b+"+"+c+"+"+d+"=?");
                                                result=a*b+c+d;
                                                break;
                                        case 2:System.out.println(a+"*"+b+"+"+c+"-"+d+"=?");
                                                result=a*b+c-d;
                                                break;
                                        case 3:System.out.println(a+"*"+b+"+"+c+"*"+d+"=?");
                                                result=a*b+c*d;
                                            break;
                                        case 4:System.out.println(a+"*"+b+"+"+c+"/"+d+"=?");
                                                float f = c;
                                                float g = d;
                                                if(g!=0){
                                                    result =a*b+f/g;    
                                                }
                                                break;
                                    }
                            }
                            break;
                            case 2:{
                                    switch(k){
                                        case 1:System.out.println(a+"*"+b+"-"+c+"+"+d+"=?");
                                                result=a*b-c+d;
                                                break;
                                        case 2:System.out.println(a+"*"+b+"-"+c+"-"+d+"=?");
                                                result=a*b-c-d;
                                                break;
                                        case 3:System.out.println(a+"*"+b+"-"+c+"*"+d+"=?");
                                                result=a*b-c*d;
                                                break;
                                        case 4:System.out.println(a+"*"+b+"-"+c+"/"+d+"=?");
                                                float f = c;
                                                float g = d;
                                                if(g!=0){
                                                    result =a*b-f/g;    
                                                }        
                                                break;
                                    }
                            }
                            break;
                            case 3:{
                                    switch(k){
                                        case 1:System.out.println(a+"*"+b+"*"+c+"+"+d+"=?");
                                                result=a*b*c+d;
                                                break;
                                        case 2:System.out.println(a+"*"+b+"*"+c+"-"+d+"=?");
                                                result=a*b*c-d;
                                                break;
                                        case 3:System.out.println(a+"*"+b+"*"+c+"*"+d+"=?");
                                                result=a*b*c*d;
                                                break;
                                        case 4:System.out.println(a+"*"+b+"*"+c+"/"+d+"=?");
                                                float f = c;
                                                float g = d;
                                                if(g!=0){
                                                    result =a*b*f/g;    
                                                }
                                                break;
                                    }
                            }
                            break;
                            case 4:{
                                    switch(k){
                                        case 1:System.out.println(a+"*"+b+"/"+c+"+"+d+"=?");
                                                float f1 = b;
                                                float g1 = c;
                                                if(g1!=0){
                                                    result =a*f1/g1+d;    
                                                }
                                                break;
                                        case 2:System.out.println(a+"*"+b+"/"+c+"-"+d+"=?");
                                                float f2 = b;
                                                float g2 = c;
                                                if(g2!=0){
                                                    result =a*f2/g2-d;    
                                                }
                                                break;
                                        case 3:System.out.println(a+"*"+b+"/"+c+"*"+d+"=?");
                                            float f3 = b;
                                            float g3 = c;
                                            if(g3!=0){
                                                result =a*f3/g3*d;    
                                            }
                                            break;
                                        case 4:System.out.println(a+"*"+b+"/"+c+"/"+d+"=?");
                                                float f4 = b;
                                                float g4 = c;
                                                float p4 = d;
                                                if(g4!=0 && p4!=0){
                                                    result =a*f4/g4/p4;    
                                                }
                                                break;
                                    }
                            }
                            break;
                        }
                }
                break;
                case 4:{
                        switch(j){
                            case 1:{
                                    switch(k){
                                        case 1:System.out.println(a+"/"+b+"+"+c+"+"+d+"=?");        
                                                float f1 = a;
                                                float g1 = b;
                                                if(g1!=0){
                                                    result =f1/g1+c+d;    
                                                }
                                                break;
                                        case 2:System.out.println(a+"/"+b+"+"+c+"-"+d+"=?");
                                                float f2 = a;
                                                float g2 = b;
                                                if(g2!=0){
                                                    result =f2/g2+c-d;    
                                                }
                                                break;
                                        case 3:System.out.println(a+"/"+b+"+"+c+"*"+d+"=?");
                                                float f3 = a;
                                                float g3 = b;
                                                if(g3!=0){
                                                    result =f3/g3+c*d;    
                                                }
                                                break;
                                        case 4:System.out.println(a+"/"+b+"+"+c+"/"+d+"=?");
                                                float f4 = a;
                                                float g4 = b;
                                                float p4 = c;
                                                float q4 = d;
                                                if(g4!=0 && q4!=0){
                                                    result =f4/g4+p4/q4;    
                                                }
                                                break;
                                    }
                            }    
                            break;
                            case 2:{
                                    switch(k){
                                        case 1:System.out.println(a+"/"+b+"-"+c+"+"+d+"=?");        
                                                float f1 = a;
                                                float g1 = b;
                                                if(g1!=0){
                                                    result =f1/g1-c+d;    
                                                }
                                                break;
                                        case 2:System.out.println(a+"/"+b+"-"+c+"-"+d+"=?");
                                                float f2 = a;
                                                float g2 = b;
                                                if(g2!=0){
                                                    result =f2/g2-c-d;    
                                                }
                                                break;
                                        case 3:System.out.println(a+"/"+b+"-"+c+"*"+d+"=?");
                                                float f3 = a;
                                                float g3 = b;
                                                if(g3!=0){
                                                    result =f3/g3-c*d;    
                                                }
                                                break;
                                        case 4:System.out.println(a+"/"+b+"-"+c+"/"+d+"=?");
                                                float f4 = a;
                                                float g4 = b;
                                                float p4 = c;
                                                float q4 = d;
                                                if(g4!=0 && q4!=0){
                                                    result =f4/g4-p4/q4;    
                                                }
                                                break;
                                    }
                            }
                            break;    
                            case 3:{
                                    switch(k){
                                        case 1:System.out.println(a+"/"+b+"*"+c+"+"+d+"=?");        
                                                float f1 = a;
                                                float g1 = b;
                                                if(g1!=0){
                                                    result =f1/g1*c+d;    
                                                }
                                                break;
                                        case 2:System.out.println(a+"/"+b+"*"+c+"-"+d+"=?");
                                                float f2 = a;
                                                float g2 = b;
                                                if(g2!=0){
                                                    result =f2/g2*c-d;    
                                                }
                                                break;
                                        case 3:System.out.println(a+"/"+b+"*"+c+"*"+d+"=?");
                                                float f3 = a;
                                                float g3 = b;
                                                if(g3!=0){
                                                    result =f3/g3*c*d;    
                                                }
                                                break;
                                        case 4:System.out.println(a+"/"+b+"*"+c+"/"+d+"=?");
                                                float f4 = a;
                                                float g4 = b;
                                                float p4 = c;
                                                float q4 = d;
                                                if(g4!=0 && q4!=0){
                                                    result =f4/g4*p4/q4;    
                                                }
                                                break;
                                    }
                            }
                            break;
                            case 4:{
                                    switch(k){
                                        case 1:System.out.println(a+"/"+b+"/"+c+"+"+d+"=?");        
                                                float f1 = a;
                                                float g1 = b;
                                                float p1 = c;
                                                if(g1!=0 && p1!=0){
                                                    result =f1/g1/p1+d;    
                                                }
                                                break;
                                        case 2:System.out.println(a+"/"+b+"/"+c+"-"+d+"=?");
                                                float f2 = a;
                                                float g2 = b;
                                                float p2 = c;
                                                if(g2!=0 && p2!=0){
                                                    result =f2/g2/p2-d;    
                                                }
                                                break;
                                        case 3:System.out.println(a+"/"+b+"/"+c+"*"+d+"=?");
                                                float f3 = a;
                                                float g3 = b;
                                                float p3 = c;
                                                if(g3!=0 && p3!=0){
                                                    result =f3/g3/p3*d;    
                                                }
                                                break;
                                        case 4:System.out.println(a+"/"+b+"+"+c+"/"+d+"=?");
                                                float f4 = a;
                                                float g4 = b;
                                                float p4 = c;
                                                float q4 = d;
                                                if(g4!=0 && p4!=0 && q4!=0){
                                                    result =f4/g4/p4/q4;    
                                                }
                                                break;
                                    }
                            }
                            break;
                        }
                }
                break;
            }
            float jg = sc.nextFloat();                  //將自算結果賦給jg
            if(jg==result){                             //用if,else對結果進行判斷,正確則繼續,若錯誤則顯示正確答案,然后繼續
                System.out.println("答對了,你真是個天才!");
                right++;
            }else{
                System.out.println("結果錯誤!");
                System.out.println("再想想吧,答案似乎是:"+result+"喔!");
                }
        }

3、運用switch、case進行判斷,進行下步選擇

System.out.println("你一共答對"+right+"道題,"+"共"+h+"道題。");
        System.out.println("1.開始下一輪\t2.結束答題");
        Scanner select = new Scanner(System.in);
        int se = select.nextInt();
        switch(se){                                 //兩層switch,case判斷,
        case 1:main(null);                          //如果兩次選擇均輸入錯誤,則結束程序
                break;
        case 2:System.out.println("答題結束!");
                break;
        default:System.out.println("輸入有誤,請重新輸入!");
                System.out.println("1.開始下一輪\t2.結束答題");
                Scanner rp = new Scanner(System.in);
                int rt = rp.nextInt();
                switch(rt){
                case 1:main(null);
                        break;
                case 2:System.out.println("答題結束!");
                        break;
                default:System.out.println("連續兩次輸入錯誤,答題結束!");
                }
        }

運行結果

總結:對上周四則運算的改進。在分析階段的時候考慮的很久,怎么樣可以很方便的對4個隨機數的四則運算,但是一直沒有想到好的辦法。最后只能妥協,選擇了最笨的方法,列出了所有的可能性,在這里就不考慮效能的問題了。編碼階段就比較費勁了,每種可能性都需要寫出來,真的很容易弄亂了,翻來覆去看了好多遍。先是完成一道題的隨機生成並判斷,成功后進而完成指定題目數量的任務。考慮到for循環應該放到哪里的問題,邊運行邊改正。最后確定完成答題后的下一步選擇,是繼續答題還是結束答題。在代碼審查階段的時候更費勁,代碼太長了。還得考慮代碼格式的問題,有問題的地方進行改成。最大的收獲就是沒有放棄而選擇了最笨的方法,堅持就會有結果的。

照片:

 

不足:無法實現帶括號的四個隨機數的四則運算及支持分數的運算。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM