2016-02-01 41 views
-1

我的工作從MyProrammingLab轉讓不接受: 編寫具有以下領域的降雨量等級:降雨程序代碼實驗室

•雙打的陣列存儲降雨量爲每12個月的 的年(其中第一個索引與一月,第二與 月等對應)

類也應該有以下幾種方法:

•返回的總降雨量爲全年的方法210•返回的月平均降雨量爲全年 •返回最雨的月份作爲一個字符串 •返回用最少雨的月份作爲一個字符串

展示類的方法等的方法在一個程序中,用戶需要12次雙打(按月份排列 雙打,第一次對應於1月份的降雨量 等)。做輸入驗證:如果用戶輸入一個負數 ,忽略它並繼續詢問他們的輸入,直到你有12 非負雙數。

一旦用戶給你所有12個雙打,創建降雨 類的一個實例並調用其方法,打印出的總降雨量,平均 月降雨量,最雨的月份,當月至少是下雨,每個都在一條獨立的線路上。

這是我的計劃,這是工作的罰款與NetBeans而是通過代碼實驗室拒絕:

import java.text.DateFormatSymbols; 
import java.util.Scanner; 

public class RainFall { 
    final private double[] rainFall; 

    public RainFall(double[] arr) { 
     rainFall = arr; 
    }  
    public double getTotalRain() { 
     double total = 0; 
     for(int i=0;i<rainFall.length;i++) 
      total = total + rainFall[i]; 
     return total; 
    } 
    public double getAverageRain() { 
     double average = 0; 
     for(int i=0;i<rainFall.length;i++) 
      average = average + rainFall[i]; 
     return average/rainFall.length; 
    } 
    public String getHighestRain() { 
     int j=0; 
     for(int i=0;i<12;i++) 
      if(rainFall[i]>rainFall[j]) 
       j=i; 
     return new DateFormatSymbols().getMonths()[j]; 
    } 
    public String getLowestRain() { 
     int j=1; 
     for(int i=0;i<12;i++) 
      if(rainFall[i]<rainFall[j]) 
       j=i; 
     return new DateFormatSymbols().getMonths()[j]; 
    }  

    public static void main(String[] args) { 

     Scanner myScan = new Scanner(System.in); 


     double[] rainfallInput = new double[12]; 
     for(int i=1;i<=12;i++) { 
      System.out.print("Enter rainfall for month " + i + ":"); 
      rainfallInput[i-1]=myScan.nextDouble(); 
      myScan.nextLine(); 
      if(rainfallInput[i-1]<0) { 
       System.out.print("Enter rainfall for month " + i + :"); 
       rainfallInput[i-1]=myScan.nextDouble(); 
       myScan.nextLine(); 
      } 
     }   
     RainFall rain = new RainFall(rainfallInput); 
     System.out.println(rain.getTotalRain()); 
     System.out.println(rain.getAverageRain()); 
     System.out.println(rain.getHighestRain()); 
     System.out.println(rain.getLowestRain()); 
    } 
} 

任何幫助,將不勝感激! 預先感謝您

+2

添加具體細節爲什麼被拒絕? – SomeDude

+2

「如果用戶輸入一個負數,忽略它,並繼續詢問他們的輸入,直到」 - 你只重複一次提示,而不是無限期地輸入一個正值。 –

回答

1

我假設你的答案被拒絕,因爲你最終可以輸入在第二rainfallInput[i-1]=myScan.nextDouble();

負數用do-while循環,而不是嘗試爲正數不斷問。

public static void main(String[] args) { 

    Scanner myScan = new Scanner(System.in); 
    double[] rainfallInput = new double[12]; 

    for (int i = 0; i < 12; i++) { 
     double input; 

     do { 
      System.out.print("Enter rainfall for month " + (i + 1) + ":"); 
      input = myScan.nextDouble(); 
      myScan.nextLine(); 

      // Optionally tell why you are repeating input 
      /* 
      if (input <= 0) { 
       System.out.println("You must enter a positive value"); 
      } 
      */ 
     } while (input <= 0); 

     rainfallInput[i] = input; 
    } 
    RainFall rain = new RainFall(rainfallInput); 
    System.out.println(rain.getTotalRain()); 
    System.out.println(rain.getAverageRain()); 
    System.out.println(rain.getHighestRain()); 
    System.out.println(rain.getLowestRain()); 
} 

public double getTotalRain() { 
    double total = 0; 
    for (int i = 0; i < rainFall.length; i++) { 
     total += rainFall[i]; 
    } 
    return total; 
} 

public double getAverageRain() { 
    return getTotalRain()/(1.0 * rainFall.length); 
} 

public String getHighestRain() { 
    double max = Double.MIN_VALUE; 
    int maxIndex = 0; 
    for (int i = 0; i < rainFall.length; i++) { 
     double amount = rainFall[i]; 
     if (amount > max) { 
      max = amount; 
      maxIndex = i; 
     } 
    } 
    return DateFormatSymbols.getInstance().getMonths()[maxIndex]; 
} 

public String getLowestRain() { 
    double min = Double.MAX_VALUE; 
    int minIndex = 0; 
    for (int i = 0; i < rainFall.length; i++) { 
     double amount = rainFall[i]; 
     if (amount < min) { 
      min = amount; 
      minIndex = i; 
     } 
    } 
    return DateFormatSymbols.getInstance().getMonths()[minIndex]; 
} 
+0

我想你是對的!但它仍然被拒絕,我得到的唯一解釋是:邏輯錯誤(s)。 – user299777

+0

嗯。可能你的最小/最大功能是錯誤的。我更新了其餘的。 –

+0

非常感謝您的快速幫助! – user299777

0

得到的for循環和代碼實驗室擺脫myScan.nextLine();會接受它。