アプリ版:「スタンプのみでお礼する」機能のリリースについて

わからないので教えてください。

キーボード入力を負の整数になるまで繰り返し、負の整数を入力したら
負の整数を含めずにその平均値を出しなさい。

という問題なのですが、

僕は繰り返しなので、
do{
System.out.println("整数を入力してください。負の数が入力されたら終了します。");
line = br.readLine();
i= Integer.parseInt(line);
}while(i>0);

と考えたのですが、これ以上先に進めなくて困っています。

まずこのiに入力されたものを合計しなくてはいけないので、配列を使わないとならないとわかったのですが、配列の使い方がいまいちわかりません。
int []m=new int[i];
と入力し(その前にiを初期化)
m[i]= Integer.parseInt(line);
としたのですが、うまくいきませんでした。この場合どのように配列を考えればよいのでしょうか。

あと、「最後の入力した負の整数を含まず」ということは、どう書けばよいのでしょうか。


ヒントでもいいので教えてください。よろしくお願いします。

A 回答 (2件)

koko_uさんの回答にもありますが、配列は使わなくてもいいと思います。


以下に流れを簡単に書いてみます。

(1)
とりあえず、do~whileの前に、int型の適当な変数を2つ(仮にsum、counterとします)を用意しておきましょう。
sumは入力値の和を格納するため、counterは加えた回数を格納するために使います。
(2)
do~whileの中で
 i= Integer.parseInt(line);
として取得した入力値のint型の値について、負の数かどうか判定します。
(3)
上記(2)で負の数でなければ、sumにiを加え、counterを1だけ増やします。
もし負の数だった場合は、break;として、ループを抜けましょう。
(今回はwhile判定があるので、breakは必須ではありません)
(4)
いつかはループを抜けてここにたどり着くでしょう。
そうしたら、先ほどのsum(合計)をcounter(加えた回数)で割れば、求めたい平均になります。


なお、入力値が数値でないときの保証や、用意した変数の初期化には言及していません。
必要でしたらそれも付け加えておいてください。

あえて日本語の説明で書くようにして、コーディングをお見せしないようにしました。
アルゴリズムに強くなったほうが、gumgumgumさんの今後のプログラミング技術につながると考えましたので。

がんばってください!
    • good
    • 0
この回答へのお礼

わかりやすいご説明ありがとうございます!!!

さっそくやってみます!!

お礼日時:2008/10/13 21:38

>合計しなくてはいけないので、配列を使わないとならないとわかったのですが


合計するだけなら配列は要らない。どんどん足していくだけ。

この回答への補足

i+1 ...ということでしょうか?

補足日時:2008/10/12 00:14
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!