2017年5月17日 星期三

[JAVA]第4章 認識物件:課後練習(一)

1.撰寫可讓使用者輸入想計算的費氏(Fibonacci)數個數的程式

    public static void main(String[] args) {
        java.util.Scanner sc1 = new Scanner(System.in);
        System.out.print("求幾個費氏數?");
        int n = Integer.parseInt(sc1.nextLine());

        switch (n) {
            case 1:
            case 2:
                for (int f = 0; f <= n - 1; f++) {
                    System.out.printf("%d ", f);
                }
                break;
            default:
                //case >=3
                int[] f_arr = new int[n];
                f_arr[0] = 0;
                f_arr[1] = 1;
                for (int i = 2; i <= n - 1; i++) {
                    f_arr[i] = f_arr[i - 2] + f_arr[i - 1];
                }
                for (int f : f_arr) {
                    System.out.printf("%d ", f);
                }
        }

    }

想了一段時間,多次從錯中修正,在 if 和 switch 間取捨也有猶豫一下,
最多次出現的 exception,是陣列長度與元素數量不符,
所以嘗試調度建立陣列物件的位置和條件式,
使變數 n 先決定陣列長度後,再進入迴圈,
還有因為 enhanced for loop & print 的位置起初置放於迴圈內,
直接拉到迴圈外會產生編譯錯誤,
故將 int[] f_arr 調整至迴圈外。

是題有成就感的題目。

沒有留言:

張貼留言