2014-03-24 65 views
0

一切工作正常,我只需要我的輸出說,與降雨量最高/最低的季度,而不是實際值。我不知道如何在季度和價值觀聯繫在一起,這樣的輸出將是季度1,2,3或4爪哇最小值

import java.util.Scanner; 

public class rainfall 
{ 
    public static void main(String[] args) 
    { 
     Scanner scan = new Scanner(System.in); 
     double[] rainfall = new double[4]; 
     double totalRainfall = 0.0; 
     double max = 0, min = 0; 


     for (int i=0; i < 4; i++) 
     { 
     System.out.print("Enter rainfall for quarter " + (i+1) + ": "); 
     rainfall[i] = scan.nextDouble(); 
     totalRainfall += rainfall[i]; 
     if (i == 0) 
     { 
      max = min = rainfall[i]; 
     } 

     { 
      if (rainfall[i] > max) 
       max = rainfall[i]; 
      else if (rainfall[i] < min) 
       min = (i + 1); 
      //min = rainfall[i];  
     } 
    } 

    System.out.println("Total rainfall = "+totalRainfall); 
    System.out.println("Average rainfall = "+(totalRainfall/4.0)); 
    System.out.println("Max quarter rainfall = "+ max); 
    System.out.println("Min quarter rainfall = " + min); 

    //System.out.println("Max quarter rainfall = "+ maxQuarter); 
    //System.out.println("Min quarter rainfall = " + minQuarter); 

    }//end main 
}//end class 
+0

排序數組並打印數組的第一個/最後一個值。 http://stackoverflow.com/questions/8938235/java-sort-an-array – grizeldi

回答

0

你應該格式化你的代碼(按Ctrl + Shift + F在Eclipse)。

保持i指數平行於最小值和最大值,就像imax,imin一樣。否則,就像你的情況一樣,你會失去價值的根源。

2

只存儲索引而不是值:

if (rainfall[i] > rainfall[max]) 
    max = i; 
else if (rainfall[i] < rainfall[min]) 
    min = i; 

System.out.println("Max quarter rainfall = " + max + 1); 
System.out.println("Min quarter rainfall = " + min + 1); 
+1

應該是i + 1,因爲索引將是0到3,但他們希望它們對應於季度1到4。可以在輸出時添加1。 –

+0

啊好點,我同意這應該在打印聲明。 – Tyler

+0

我將如何在代碼頂部聲明最小值和最大值?對不起,我對java非常陌生 – user3455588

1

你需要跟蹤maxQuarter和minQuarter(添加爲整數),以及最大值和最小值。像這樣:

import java.util.Scanner; 

public class rainfall 
{ 
    public static void main(String[] args) 
    { 
     Scanner scan = new Scanner(System.in); 
     double[] rainfall = new double[4]; 
     double totalRainfall = 0.0; 
     double max = 0, min = 0; 
     // init to Q1 as that's the 1st tested 
     int maxQuarter = 1, minQuarter = 1; 


     for (int i=0; i < 4; i++) 
     { 
     System.out.print("Enter rainfall for quarter " + (i+1) + ": "); 
     rainfall[i] = scan.nextDouble(); 
     totalRainfall += rainfall[i]; 
     if (i == 0) 
     { 
      max = min = rainfall[i]; 
     } 

     { 
      if (rainfall[i] > max) { 
       max = rainfall[i]; 
       maxQuarter = i + 1; 
      } 
      if (rainfall[i] < min) { 
       min = rainfall[i]; 
       minQuarter = i + 1; 
      } 
     } 
    } 

    System.out.println("Total rainfall = "+totalRainfall); 
    System.out.println("Average rainfall = "+(totalRainfall/4.0)); 
    System.out.println("Max quarter rainfall = "+ max); 
    System.out.println("Min quarter rainfall = " + min); 

    System.out.println("Max quarter rainfall = "+ maxQuarter); 
    System.out.println("Min quarter rainfall = " + minQuarter); 

    }//end main 
}//end class 

隨着這些變化,它運行罰款我的基本測試:

Enter rainfall for quarter 1: 2 
Enter rainfall for quarter 2: 4 
Enter rainfall for quarter 3: 6 
Enter rainfall for quarter 4: 7 
Total rainfall = 19.0 
Average rainfall = 4.75 
Max quarter rainfall = 7.0 
Min quarter rainfall = 2.0 
Max quarter rainfall = 4 
Minquarter rainfall = 1 
+1

我會把文字說成像''大多數降雨量的季度是「+季度+」降雨量(實際):「' – Brian

+0

我剛編輯過他的例子。對他打扮起來不太感興趣。 –

+0

所以,如果我這樣做,它總是說季度4是最大值和最小值,不管季度是否降雨最多。任何想法在我存儲正確的變量? – user3455588