4 回答

TA貢獻1873條經驗 獲得超9個贊
解決這個問題的方法是跟蹤最高降雨量的指數而不是值。您現在遇到的問題是您有 2 個不同的數組,并且其中一個數組的值與另一個數組不相關。
為此,你可以這樣做:
public int getMaxRainfallIndex(double[] rainfall) {
int max = 0;
for (int i = 1; i < rainfall.length; i++)
if (rainfall[i] > rainfall[max]) {
max = i;
}
return max;
}
然后,您可以使用此返回值從原始 2 個數組中獲取實際降雨量和月份。
然而,一種更簡潔的方法是創建一個單獨的類來存儲這兩條信息,這樣您就可以返回包含這兩條信息的整個對象。這樣你甚至不必擔心保留兩個單獨的數組。
可以這樣做:
public static void main(String[] args) {
Rainfall[] rainfall = new Rainfall[12];
//Do everything else
}
public class Rainfall {
private String month;
private double rainfall;
//Constructor, Getters + Setters
}

TA貢獻1946條經驗 獲得超3個贊
一個可能的解決方案是返回月份的索引,例如您的getMaxRainfall方法應如下所示:
public int getMaxRainfallIndex(double[] rainfall)
{
int maxIndex = 0;
double max = rainfall[0];
for(int i = 1; i < rainfall.length; i++)
if(rainfall[i] > max)
{
max = rainfall[i];
maxIndex = i;
}
return maxIndex;
}
在您的中,main您應該使用該索引來獲取月份和降雨量:
int index = amazon.getMaxRainfallIndex(rainfall);
system.out.println("month of max rainfall: " + months[index]);
system.out.println("max rainfall: " + rainfall[index]);

TA貢獻1752條經驗 獲得超4個贊
您可以創建一個單獨的數組,而不是單獨管理兩個數組class:
public class RainfallByMonth {
private double rainfall;
private String month;
// Getter/Setters here
}
在你的主要方法中:
public static void main(String[] args) {
RainfallByMonth[] rainfallByMonths = new RainfallByMonth[12];
String[] months = new DateFormatSymbols().getMonths(); // array of months
Scanner scanner = new Scanner(System.in);
for (int i = 0; i < rainfallByMonths.length; i++) {
System.out.println("How much rainfall did you receive, in inches, for the month of: " + months[i]);
rainfallByMonths[i].setMonth(months[i]);
rainfallByMonths[i].setRainfall(scanner.nextDouble());
}
RainfallByMonth maxRainfall = getMaxRainfall(rainfallByMonths);
// Now you can print the results here
}
按月計算最大降雨量:
public static RainfallByMonth getMaxRainfall(RainfallByMonth[] rainfallByMonths) {
RainfallByMonth maxRainfall = rainfallByMonths[0];
for(int i = 1; i < rainfallByMonths.length; i++) {
if(rainfallByMonths[i].getRainfall() > maxRainfall.getRainfall()) {
maxRainfall = rainfallByMonths[i];
}
}
return maxRainfall;
}
同樣,情況反之亦然min(只是條件不同)。這將更容易管理。

TA貢獻1805條經驗 獲得超9個贊
public static void main(String[] args) {
String[] months = {"January", "February", "March","April","May","June","July","August","September","October","November","December"};
int[] weather = {10, -1, 7,44,33,6,22,54,89,21,8,51};
int max = 0;
int index= 0;
for (int i=0;i<weather.length-1;i++ ){
if (weather[i] > m){
max = weather[i];
index= i;
}
}
System.out.println(months[index]);
}
查找最高月份的示例程序。要查找最低月份降雨量,請在if條件中使用小于符號
添加回答
舉報