質問: x; if(x
回答: コードを整形した状態かつコンパイルエラーの発生しない状態にしたものが以下になります。 ``` public class CalcFile { /** * @param args */ public static void main(String[] args) { Scanner stdin = new Scanner(System.in); int max = Integer.MIN_VALUE, x; int min = Integer.MAX_VALUE; double ave = 0.0d; int numbers = 0; int sum = 0; int i = 0; while (stdin.hasNext()) { x = stdin.nextInt(); if (x > max) max = x; if (x < min) min = x; } for (i = 0; i < args.length; i++) { sum = +i; ave = sum / 500; } System.out.printf("max=%d\n", max); System.out.printf("min=%d\n", min); System.out.printf("ave=%d\n", ave); } } ``` いくつか気になる点を。 * Scanner stdinは処理が終了したら閉じなければなりません。 * intやdoubleを宣言したあと、何らかの初期を入れておかずに分岐処理へ渡す場合は、コンパイルエラーになります。 * 変数 numbers はどこにも使われていません。 * `for (i = 0; i < args.length; i++) {` の部分で、argsを指定していますが、これはこのクラスのmainメソッド起動時に渡される引数です。 * `ave = sum / 500;`と書かれていますが、現在のコードでは500個入力されているかをチェックするロジックはないため、すべて500で割り算してしまいます。入力のあった個数で割るのが正しいでしょう。 * `System.out.printf("ave=%d\n", ave);`の行は、aveの値がdouble値のため、%dではフォーマットエラーになります。 なお、`while (stdin.hasNext()) {`で数値入力の終わらせ方は、CTRL+CないしはCTRL+Zです。