2016-07-01 40 views
1

我需要寫一個接受非負雙型 序號的 收入達一一unti 拉負數 輸入 程序重複,負數結束 程序。當程序通過輸入一個負數 完成,它打印出 最小值,平均值,和用於所述一組輸入收入最大(不包括最後一個負 數 是 因爲它僅表示用戶輸入的結束)。如何讓掃描儀存儲和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

有什麼問題你當前的代碼?另外如果你想停止一個負數,它應該是當我> = 0 breal是不必要的 – bi0phaz3

+0

在你的while循環中,條件應該是i> = 0,並刪除if break。它也應該是i = sc.nextDouble()忘記你的neXtDouble double,所以用戶輸入負數就會跳出循環。只需將我存儲在某個數組中,然後在最後循環以獲取並計算您的輸出值 – bi0phaz3

+0

在輸入數字 –

回答

1

有你的代碼的一些問題在這裏:

  1. 你從來沒有真正的循環之前增加或者總和計數
  2. 你讀投入,但隨後你讀到nextDouble裏面的循環和循環條件只檢查 - wh我從不改變。
  3. 你從未在同時打印出的最小,平均和最大
  4. 條件和if語句是冗餘(除了如果條件接受其中而條件沒有)

現在,這看起來非常類似於我的編程任務,因此我不會爲您發佈完整的代碼。下面是你應該做的到,雖然解決您的代碼:

  1. 增量總和和循環計數
  2. 使用要麼nextDouble-不是兩個。
  3. 在循環後打印所需的輸出
  4. 選擇終止循環的一種方法。下面是關於如何做到這一點兩種思路:

    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); 
    } 
}