0

私はJavaが初めてなので、いくつかの質問を練習しています.しかし、私はこれにつまずきました.私は正しい答えに非常に近いことを知っており、0未満の場合は壊れるelse条件を設定することを考えています. . これをあちこちに挿入しようとしましたが、うまくいきません。

コンソール用の Scanner をパラメーターとして受け取り、ユーザーに数字の入力を繰り返し求める printAverage という名前のメソッドを記述します。ゼロ未満の数値を入力すると、入力されたすべての負でない数値の平均が表示されます。平均を double として表示し、丸めません。たとえば、メソッドの呼び出しは次のようになります。

Scanner console = new Scanner(System.in);
printAverage(console);
The following is one example log of execution for your method:

Type a number: 7
Type a number: 4
Type a number: 16
Type a number: -4
Average was 9.0
If the first number typed is negative, do not print an average.

私の試み:

  public static void printAverage(Scanner console){

    int num=0;
    double sum=0;
    double avg=0;
    int counter=0;
    while(num>=0){
   System.out.print("Type a number: ");
     num=console.nextInt();

        if(num>0){
     sum+=num;
     counter++;
    avg=sum/counter;
        }


    }
    System.out.println("Average was " +  avg);


}

すみません。質問がわかりにくかったです。たとえば、数字として 0 0 1 1 -2 を入力すると、

数値を入力してください: 0 数値を入力してください: 0 数値を入力してください: 1 数値を入力してください: 1 数値を入力してください: -2 平均は 0.5 でした

しかし、私は得ています

数値を入力してください: 0 数値を入力してください: 0 数値を入力してください: 1 数値を入力してください: 1 数値を入力してください: -2 平均は 1.0 でした

4

3 に答える 3

0

これを試して:

do {
    System.out.print("Type a number: ");
    num=console.nextInt();
    if (num >= 0) {
        sum+=num;
        counter++;
    }
} while (num >= 0);
if (counter > 0) {
    avg = sum / counter;
    System.out.println("Average was " +  avg);
}
于 2013-04-06T16:09:02.597 に答える
0

0以下なら壊れるというelse条件を入れようと思っています。これをあちこちに挿入しようとしましたが、うまくいきません。

を入れるか入れないelseかは問題ではありません。while()

また、else一部のため、ループ内の最後のステートメントが来る

于 2013-04-06T16:09:20.660 に答える
0

最初の数値が負の場合に出力を抑制するには、次のように を追加しifますSystem.out.println()

if (counter > 0) {
    System.out.println("Average was " +  avg);
}

また、既存の にはバグがifあります。

            if(num>=0){
于 2013-04-06T16:11:18.513 に答える