こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

javaプログラミングについて!

ただいまjavaプログラミングの勉強をしております。
そこで数字を複数回入力させ、-1を入力すると終了し、その数字の最大、最小、平均を出力するプログラムを作っているのですが、
public static void main(String[] args) {
int max = 0;
int min = 100;
int sum = 0;
int count = 0;
Scanner sc = new Scanner(System.in);
System.out.println("正の整数を入力してください");
int n = sc.nextInt();
while (num01 != -1){
System.out.println("正の整数を入力してください");
sum += n;
n = sc.nextInt();
count++;
if(max < n) max = n;
if(min > n) min = n;
}
System.out.println("入力された整数の最大は" + max);
System.out.println("入力された整数の最小は" + min);
System.out.println("入力された整数の平均は" + sum/count);
}
}
このようなプログラミングが作れたのですが、たとえば30と10を入力したときに
最大10
最小-1
平均20
と表示されてしまいます。色々試行錯誤してみたのですが、改善されなかったため質問させて頂きました。原因と解決方法を教えて頂きたいです。
よろしくお願いします。

投稿日時 - 2016-05-22 15:17:02

QNo.9176361

すぐに回答ほしいです

質問者が選んだベストアンサー

合計の後に、次のものを読みこんでいるから、30 が無視され、-1 の終了の合図も処理してしまっている。
:
int n = sc.nextInt();
while (num01 != -1){
System.out.println("正の整数を入力してください");
sum += n;
count++;
if(max < n) max = n;
if(min > n) min = n;
n = sc.nextInt();
}
:

投稿日時 - 2016-05-22 15:47:27

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

それ以前にコンパイルできないと思いますけど(変数num01はどこで定義されてますか?)

>sum += n;
>n = sc.nextInt();
>count++;
>if(max < n) max = n;
>if(min > n) min = n;

の順番をよく見直しましょう。

投稿日時 - 2016-05-22 15:52:40

補足

すいませんnum01の部分はnです。

投稿日時 - 2016-05-22 16:03:29

ANo.2

変数の値がどう変化するのか
System.out.println
を差し込んで確認してみると良いですよ。

問題点1.一度目の入力値の判定文がない
問題点2.-1を入力した際にも判定分を通ってしまう

投稿日時 - 2016-05-22 15:51:38

あなたにオススメの質問