
キーボードから10人分の点数を格納する配列を用意し、平均点および平均点以上の人数と番号を表示するプログラムで、下記のプログラムを作成してみたんですけど、平均点以上の人数と番号がうまく表示されません。if文でも人数は0になるし、番号は1~10番まで表示されるし、なぜでしょうか?
import java.io.*;
class Hairetu2
{
public static void main(String args[]) throws IOException
{
System.out.println("10人分の点数を入力してください。");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int s[]=new int[10];
int i;
int sum=0,count=0;
double avg=0;
for(i=0; i<s.length; i++){
System.out.print((i+1)+"番は?");
String str = br.readLine();
int a = Integer.parseInt(str);
s[i]=a;
sum+=a;
avg = (double)sum/10;
if(avg<=count)
count++;
}
System.out.println("平均点は"+avg);
System.out.println("平均点以上の人は"+count+"人");
for(i=0; i<s.length; i++){
if(i>=avg)
i++;
System.out.print((i+1)+"番\t");
}
}
}
No.1ベストアンサー
- 回答日時:
ループの1順でなにが行われるのか
変数が表している値はなにか
といったところを、よく考えなおしてください。
紙とエンピツで手計算する時にどういう順番でやるかを考えてみるのも手です。
> avg = (double)sum/10;
この時点では、sumには「今まで入力した人数分の合計」が入っています。
10人になるのは最後の1回だけです。それ以外は10で割っても平均にはなりません。
また、それまでの人数(=i+1)で割っても、「それまでの人数分の平均」であって「10人分の平均」ではありません。
> if(avg<=count)
> count++;
avgは「平均値」、countは「平均値以上の人の人数」ですよね?
この2つを比較する意味ってありますか?
また、上に書いたように、このループでは「全員の平均点」は計算できないのですから、「平均点以上かどうか」なんて判定できませんよね。
>if(i>=avg)
>i++;
これはさらに意図が不明です。
iはループで何番目かを表わすのに使っているようですが、それと平均値を比較する意図がわからないですし、判定結果によってはiを増やそうとするのもわかりません。
おそらく、平均が10以上になっているので i++が実行されず、1番から10番まで表示されたのでしょう。平均を5点くらいになるように入力してみてください。番号が飛び飛びになるはずです
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# このプログラミングの問題を教えてほしいです。 キーボードからデータ数nとn個のデータを入力し、平均値 3 2022/12/19 22:51
- C言語・C++・C# C言語のエラーについて 2 2022/07/11 13:56
- C言語・C++・C# C言語 プログラミング 4 2022/05/22 11:53
- Ruby 【JAVA】数字をひし形に出力するプログラムについて 2 2022/07/11 23:32
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
- Java Java 配列<選挙> 4 2023/07/31 15:07
- C言語・C++・C# プログラミングを教えて欲しいです。 配列aは、int a[9]={7,6,12,8,3,5,10,9 4 2022/12/19 23:27
- C言語・C++・C# C言語 3 2022/11/09 13:27
- その他(プログラミング・Web制作) python コードについて(初学者です) 3 2023/07/20 14:44
- C言語・C++・C# 10人分の生徒の英語の点数{32,34,41,38,40,26,14,46,42,50} と数学の点 2 2022/05/26 21:31
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
数値⇒漢数字変換 java
-
#の表記
-
取得した変数の値に1000を...
-
美しいコードって?
-
繰り返しによる星印の出力
-
テキストボックスに入力された...
-
ループ処理の際、最後だけ","を...
-
Ctrl+Zが入力されると終了する...
-
javaプログラムについて
-
論理演算子”||”またはの入力方法
-
javaの条件分岐でコンソールに...
-
for文の実行結果について
-
Java キーボードから負の数が入...
-
入力データ数を入力して、その...
-
Randomメソッドの確率設定
-
2つのスクロールバーを連動させ...
-
java 拡張for map
-
java キーボード入力された値の...
-
JAVAのfor文で困っています。
-
コマンドライン引数の例外処理...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ループ処理の際、最後だけ","を...
-
論理演算子”||”またはの入力方法
-
数値⇒漢数字変換 java
-
java キーボード入力された値の...
-
Randomメソッドの確率設定
-
テキストボックスに入力された...
-
続・ZZZ,ZZZ,ZZ9形式の金額形式...
-
7つ数字を表示したら改行すると...
-
countに実行した回数をいれたい...
-
JAVAのfor文で困っています。
-
(急いでいます)Javaで3回間違...
-
Java 入力した整数値の合計を、...
-
Java、2の0乗~10乗の表示
-
点数をだす時に、maxとminがお...
-
javaです。 途中まで出来ている...
-
Ctrl+Zが入力されると終了する...
-
配列を逆順させて表示させる方...
-
Java 配列 勝敗、引き分け判定...
-
繰り返しによる星印の出力
-
javaプログラムについて
おすすめ情報