/* * 練習問題10.4 p.205 * 今までの練習問題からforループを使用した問題を数題選んで、whileループを使用して書き直しなさい。 * do-whileループを使用しても書きなおすことができますか。そのように書きなおしたりしますか。しないとしたら、なぜですか。 */ /* * 練習問題1.9 p.17 * Fibonacciアプリケーションを修正して、数列を配列に保存して、最後に値のリストを表示するようにしなさい。 */ package ch10.ex10_04; public class ArrayFibonacci { /** * Define title */ static final String title = "Fibonacci!"; /** * @param args * * 値が50未満のフィボナッチ数列を表示する */ public static void main(String[] args) { // Show Title System.out.println(title); int lo = 1; int hi = 1; int[] result = new int[10]; int count = 0; result[count++] = lo; while (hi < 50) { // System.out.println(hi); result[count++] = hi; hi = lo + hi; // 新しいhi lo = hi - lo; // 新しいloは、(合計 - 古いlo) // すなわち、古いhi } // ##### オリジナル #####: /* * for (int i = 0; i < count; i++) { System.out.println(result[i]); } */ // ##### while版 #####: /* * int i = 0; while (i < count) { System.out.println(result[i++]); } */ // ##### do-while版 #####: // (必ず一度はprintlnが実行されるので、do-whileでも書ける) // 但し、一度もprintlnが実行されないように仕様が変更される可能性を考えると、do-whileは使わない方が良いと思う。 int i = 0; do { System.out.println(result[i++]); } while (i < count); } }