解答例 - j1.lesson11basic.ArrayStatistics2

package j1.lesson11basic;

import java.io.*;

/**
 * 課題1112 - 解答例.
 @author java2005
 @version $Id: ArrayStatistics2_java.rps,v 1.1 2006/07/14 05:33:59 java2005 Exp $
 */
public class ArrayStatistics2 {

    /**
     * コンソールから実数型のデータを次々と入力し、最大値と最小値をインデックスと一緒に表示するプログラム。
     * ただし、最大値、最小値のインデックスは最も小さいものを表示する。
     * mainメソッドの動作を表す擬似コードは以下の通りである。
     <pre><code>
     * プログラム全体
     *     print &quot;データ個数を入力:&quot;
     *     dataSize = コンソール入力 (整数)
     *     if dataSize が0以下
     *         print &quot;データ個数は、1以上にして下さい。&quot;
     *         プログラムの終了
     *     data = 長さ dataSize の新しい配列 (double[])
     *     for i を  0 から dataSize - 1 まで
     *         print &quot;第&quot; + i + &quot;番目のデータを入力:&quot;
     *         data[i] = コンソール入力(実数)
     *     indexOfMinimum = 0
     *     minimum = data[0]
     *     indexOfMaximum = 0
     *     maximum = data[0]
     *     for i を  1 から dataSize - 1 まで
     *         if maximum &lt; data[i]
     *              indexOfMaximum = i
     *              maximum = data[indexOfMaximum]
     *         if data[i] &lt; minimum
     *              indexOfMinimum = i
     *              minimum = data[indexOfMinimum]
     *     print &quot;データの最大値:&quot; + maximum
     *     print &quot;最大値のデータは、&quot; + indexOfMaximum + &quot;番目に入力されています。&quot;
     *     print &quot;データの最小値:&quot; + minimum
     *     print &quot;最小値のデータは、&quot; + indexOfMinimum + &quot;番目に入力されています。&quot;
     </code></pre>
     @param args 無視される
     @throws IOException 入力時に例外が発生した場合
     */
    public static void main(String[] argsthrows IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        // データの個数を入力する
        System.out.print("データ個数を入力:");
        int dataSize = Integer.parseInt(reader.readLine());
        if (dataSize <= 0) {
            System.out.print("データ個数は、1以上にして下さい。");
            return;
        }
        // データを入力する
        double[] data = new double[dataSize];
        for (int i = 0; i < data.length; i++) {
            System.out.print("第" + i + "番目のデータを入力:");
            data[i= Double.parseDouble(reader.readLine());
        }

        // 最大値とそのインデックスと最小値とそのインデックスを求める
        int indexOfMinimum = 0;
        double minimum = data[indexOfMinimum];
        int indexOfMaximum = 0;
        double maximum = data[indexOfMaximum];
        for (int i = 1; i < data.length; i++) {
            if (maximum < data[i]) {
                indexOfMaximum = i;
                maximum = data[indexOfMaximum];
            }
            if (data[i< minimum) {
                indexOfMinimum = i;
                minimum = data[indexOfMinimum];
            }
        }

        System.out.println("データの最大値:" + maximum);
        System.out.println("最大値のデータは、" + indexOfMaximum + "番目に入力されています。");
        System.out.println("データの最小値:" + minimum);
        System.out.println("最小値のデータは、" + indexOfMinimum + "番目に入力されています。");
    }
}