2016-07-01 4 views
1

に格納し、繰り返すスキャナを得ますか、負の数は プログラムを終了します。負の数 を入力してプログラムを完了すると、最後に入力された負の数値( の数字 になります。 )を除いて、入力された所得の最小値、平均値、最大値が出力されます。ここにあなたのコードを持ついくつかの問題がありますは、どのように私は 収入がラ・負の数 が 入力されている1 unti ずつ量として 数字の非負double型を受け入れるプログラムを記述する必要がwhileループ

package incomeapp; 
import java.util.Scanner; 

/** 
* 
* @author Kenneth 
*/ 
public class IncomeApp { 
    /** 
    * @param args the command line arguments 
    */ 
    public static void main(String[] args) { 
     Scanner sc = new Scanner(System.in); 
     System.out.print("Enter an income (any negative number to quit: "); 
     double sum = 0; 
     int count = 0; 
     double i = sc.nextDouble(); 
     while (i > 0){ 
      double nextDouble;  
      nextDouble = sc.nextDouble(); 
      if (i < 0){ 
       break; 
      }  
     } 
    } 
} 
+0

あなたの現在のコードが悪いのか?また、負の値で停止したい場合は、i> = 0の間、ブレイクは不要です。 – bi0phaz3

+0

whileループでは、条件はi> = 0で、ifブレークを削除する必要があります。また、i = sc.nextDouble()はあなたのneXtDouble doubleを忘れているので、whemユーザが負になると、ループから脱落します。いくつかの配列にiを格納し、最後にそれをループして出力値を取得します。 – bi0phaz3

+0

数字を入力した後に繰り返しません。 –

答えて

1

  1. は、あなたが実際にその後、あなたは、私がループの前を入力を読み込むのいずれか合計または
  2. をインクリメントしませんが、決してnextDoubleをループ内に読み込み、ループ状態のみチェックしますi - wh ichは決して変化しない。
  3. あなたが最小、平均値を印刷せず、最大
  4. 状態をしばらくし、決してステートメントは
(while条件がない受け入れる場合条件から離れている)冗長である場合

これは私のプログラミングの割り当てに非常によく似ているので、完全なコードを投稿するつもりはありません。ここでは、しかし、あなたのコードを修正するために何をすべきかです:

  1. インクリメント合計とループで回数
  2. 使用のいずれかnextDouble - 両方ではありません。
  3. ループの後に目的の出力を出力する
  4. ループを終了する方法を1つ選択します。ここでそれを行う方法上の2つのアイデアです:

    double i = sc.nextDouble(); 
    while (i > 0) { 
        // Do something with i 
        i = sc.nextDouble(); 
    } 
    

    または

    while (true) { 
        double i = sc.nextDouble(); 
        if (i <= 0) { 
         break; 
        } 
        // Do something with i 
    } 
    
0

はこれを試してみてください:

import java.util.*; 
public class HelloWorld{ 

    public static void main(String []args){ 
     Scanner sc = new Scanner(System.in); 
      System.out.print("Enter an income (any negative number to quit: "); 
      double sum = 0; 
      double max = 0; 
      double min = Double.MAX_VALUE; 
      int count = 0; 
      double nextDouble; 
      while (sc.hasNext()) {  
       nextDouble = sc.nextDouble(); 
       max = Math.max(max, nextDouble); 
       if (nextDouble < 0){       
        break; 
       }else { 
        min = Math.min(nextDouble, min); 
        sum += nextDouble; 
        count++; 
       } 
      } 
     System.out.println("Average: " + sum/count); 
     System.out.println("Min: " + min); 
     System.out.println("Max: " + max); 
    } 
} 
関連する問題