我的做業1——四則運算題目生成程序(基於控制檯)

一.題目描述:java

從《構建之法》第一章的 「程序」 例子出發,像阿超那樣,花二十分鐘寫一個能自動生成小學四則運算題目的命令行 「軟件」,知足如下需求:git

除了整數之外,還要支持真分數的四則運算,真分數的運算,例如:1/6 + 1/8 = 7/24
運算符爲 +, −, ×, ÷而且要求能處理用戶的輸入,並判斷對錯,打分統計正確率,要求能處理用戶輸入的真分數, 如 1/2, 5/12 等
用 -n 參數控制生成題目的個數,例如執行下面命令將生成10個題目編程

Myapp.exe -n 10架構

二.需求分析
a.須要可以實現對整數和分數的四則運算;app

b.可以處理用戶輸入,可以對用戶輸入的答案作出比較,求正確率;dom

c.可以處理用戶輸入的真分數;函數

d.隨機生成練習題;
e.最好可讓用戶自行選擇難度,低年級就作簡單四則運算,高年級就加入分數,負數等;
三.程序實現
程序實現大致能夠分爲3個階段:學習

①設計總體架構,用選擇結構(if或者Swith)對整數和分數分別處理;測試

②實現整數四則運算的程序編寫;.net

③實現對真分數四則運算的程序編寫。

四.代碼說明

①整數部分功能較爲簡單,隨機生成2個整數以及整數四則運算方法的編寫,低年級不該出現整數過大,負數,不整除狀況。(關鍵代碼)

for (int i = 1; i <= N; i++) {
            int a = (int) (Math.random() * 10 + 1);/*防止出現很差處理的0,很不嚴謹不可取*/
            int b = (int) (Math.random() * 10 + 1);
            int c = (int) (Math.random() * 4);
            int result = 0;
            switch (c) {
            case 0:
                System.out.print("第" + i + "題" + ": ");
                System.out.print(a + " + " + b + " = ");
                result = a + b;
                break;
            case 1:
                if (a < b) {
                    int t = a;/*保證不出現負數*/
                    a = b;
                    b = t;
                }
                System.out.print("第" + i + "題" + ": ");
                System.out.print(a + " - " + b + " = ");
                result = a - b;
                break;
            case 2:
                System.out.print("第" + i + "題" + ": ");
                System.out.print(a + " × " + b + " = ");
                result = a * b;
                break;
            case 3:
                System.out.print("第" + i + "題" + ": ");
                if (a < b) {
                    int t = a;
                    a = b;
                    b = t;
                }
                if (a % b != 0) {
                    a = (int) (Math.random() * 10 + 1) * b;/*保證能整除*/
                }

                System.out.print(a + " ÷ " + b + " = ");
                result = a / b;
                break;
            }

②真分數部分比較複雜,進行分數的加減運算時,須要進行分母的通分,結果得進行約分,保證結果是最簡分數(關鍵代碼)。
1.求最大公約數函數:
package yunsun;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.math.RoundingMode;
import java.text.DecimalFormat;
import java.util.Scanner;

public class lastdemo {

private static int Gcd(int num1, int num2) {// 求最大公約數
    num1 = Math.abs(num1);// 負數取絕對值
    num2 = Math.abs(num2);
    int min = Math.min(num1, num2);
    int maxSubmultiple = 1;
    for (int i = min; i >= 1; i--) {
        if (num1 % i == 0 && num2 % i == 0) {
            maxSubmultiple = i;
            break;
        }

    }
    return maxSubmultiple;
}

2.隨機生成真分數,以及真分數的四則運算方法具體實現以及用戶輸入真分數處理,標準答案與用戶輸入答案比對,正確率計算參見源碼。

五.測試運行
1.低年級簡單整數四則運算測試結果圖:

2.中高年級真分數四則運算測試結果圖:



六。PSP圖展現:

七.心得體會
java編程基礎太差,遇到的問題太多了。每次發現一個小問題都要花費不少時間學習,但願通過從此的多練習能有所改善吧。哇,這個多是別人的一個小小的做業,對於我,多是個「小課設」。悲哀。。。
附源代碼:https://git.coding.net/a434961671/goujian.git

相關文章
相關標籤/搜索