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 "データ個数を入力:"
* dataSize = コンソール入力 (整数)
* if dataSize が0以下
* print "データ個数は、1以上にして下さい。"
* プログラムの終了
* data = 長さ dataSize の新しい配列 (double[])
* for i を 0 から dataSize - 1 まで
* print "第" + i + "番目のデータを入力:"
* data[i] = コンソール入力(実数)
* indexOfMinimum = 0
* minimum = data[0]
* indexOfMaximum = 0
* maximum = data[0]
* for i を 1 から dataSize - 1 まで
* if maximum < data[i]
* indexOfMaximum = i
* maximum = data[indexOfMaximum]
* if data[i] < minimum
* indexOfMinimum = i
* minimum = data[indexOfMinimum]
* print "データの最大値:" + maximum
* print "最大値のデータは、" + indexOfMaximum + "番目に入力されています。"
* print "データの最小値:" + minimum
* print "最小値のデータは、" + indexOfMinimum + "番目に入力されています。"
* </code></pre>
* @param args 無視される
* @throws IOException 入力時に例外が発生した場合
*/
public static void main(String[] args) throws 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 + "番目に入力されています。");
}
}
|