2017-09-11 7 views
0

私はコーディングとJavaで非常に新しいです。私は次のような割り当てをしています。入力から正の数を読み込み、平均を計算し、小数点以下3桁の精度で出力するプログラムを作成します。入力リストは数字-1で終了します。固定番号-1の変数を含むリストを閉じる

私は作業プログラムを持っていますが、「平均を3小数点以下の精度で印刷する」という条件をどのように統合するかという手がかりはありません。これを修正する方法はありますか?どうもありがとう!

以下の私のコードを参照してください:

インポートjava.util.Scannerを。

パブリッククラスParta {

public static void main(String[] args){ 
    Scanner numInput = new Scanner(System.in); 

    double avg = 0.0; 
    double count = 0.0; 
    double sum = 0.0; 

    System.out.println("Enter a series of numbers. Enter -1 to quit."); 

    while (numInput.hasNextDouble()) 
    { 
     double negNum = numInput.nextDouble(); 
     if (negNum == -1) 
     { 
      System.out.println("You entered " + count + " numbers averaging " + avg + "."); 
      break; 
     } 
     else 
     { 
      sum += negNum; 
      count++; 
      avg = sum/count; 
     } 
    } 
} 

}

+0

'int'データ型はいずれも格納することはできません精度。そのために 'double'を使うことができます。ループはほぼ正しいですが、 'numbers.length + 1 = -1'は' -1'に変換されます。単一の '= 'は代入を表し、' == 'は等価チェックです。あなたのループを以下のように変更します:for(int i = 0; i nbokmans

+0

ifステートメントを追加して、n == -1かどうかを確認し、forループがあれば破棄します。 – Dis3buted

+0

またはループをdo/while while条件に翻訳するn!= -1 – Dis3buted

答えて

0

あなたは自分-1状態のためのループから抜け出す必要があります。

while(1) { 

Scanner sc = new Scanner(System.in); 
int n = sc.nextInt(); 
    if(n == -1) 
    break; 
    } 
+0

ありがとうございます!私は自分のコード設定を変更して動作しています。今私は3つの10進精度要件を調整する必要があります。どのようにこれを行うにはどのようなアイデア? – Bas

0

変更

for(int i=0; i < numbers.length + 1= -1 ; i++) 

for(int i=0; i < n ; i++) 

%n 

もprint文では場違いです。私はそれを削除するだろう。

、あなたの-1の条件を実装==を確認するには-1ループのために:

if (a == -1) {break;} 
+0

ありがとうございます!私は自分のコード設定を変更して動作しています。今私は3つの10進精度要件を調整する必要があります。どのようにこれを行うにはどのようなアイデア? – Bas

0

入力リストは数字で閉じ-1。

これは、-1があなたが探している最後の数字であると仮定し、すべての入力が完了したと仮定します。探している番号が-1であるかどうかを確認する条件が必要です。

+0

ありがとう!私は自分のコード設定を変更して動作しています。今私は3つの10進精度要件を調整する必要があります。どのようにこれを行うにはどのようなアイデア? – Bas

0

コードが要件を満たしていません。

小計を計算する必要があります。しかし、あなたは変数のタイプとしてintに固執します。 @nbokmansによって書かれているように、変数はdoubleまたはfloatのタイプでなければなりません。

もう1つの問題は、コードの最初の数字が後に続く数字のカウントとして指定されていることです。しかし、入力が-1になるまで、計算には任意の数値を使用するように指示されます。 forループではこれを行うことはできません。これを行うにはwhileループが必要です。

アンあなたのタスクを達成する最も簡単な方法は、入力を取得しながら、その場に結果を計算することである。

擬似コード:

declare sum as double initially 0.0; 
while(input is not -1) 
    sum = (sum + input)/2; 

output sum: