Как получить индекс наибольшего значения из трех параллельных массивов, суммированных вместе?

#java

#java

Вопрос:

Мне нужно получить индекс наибольшего суммарного значения из трех параллельных массивов, чтобы иметь возможность отображать год с наибольшим количеством снегопадов. Возможно, я ошибаюсь. Может кто-нибудь объяснить процесс или дать мне конструктивную обратную связь? Это то, что у меня есть до сих пор. Я просто играл с кодом, чтобы попытаться понять это. Я знаю, что есть много способов, но надеялся на что-то простое для понимания новичком. Спасибо за ваше время.

 public class tempSnowfall {

public static void main(String[] args) {

        String[] years =
{ 
    "1952", "1953", "1954", "1955",
    "1956", "1957", "1958", "1959",
    "1960", "1961", "1962", "1963",
    "1964", "1965", "1966", "1967",
    "1968", "1969", "1970", "1971",
    "1972", "1973", "1974", "1975",
    "1976", "1977", "1978", "1979",
    "1980", "1981", "1982", "1983",
    "1984", "1985", "1986", "1987",
    "1988", "1989", "1990", "1991",
    "1992", "1993", "1994", "1995",
    "1996", "1997", "1998", "1999",
    "2000", "2001", "2002", "2003",
    "2004", "2005", "2006", "2007",
    "2008", "2009", "2010", "2011",
    "2012", "2013", "2014", "2015",
    "2016" 
};

double snowJan[] =
{ 
    3.9, 0.0, 0.0, 2.8,
    0.0, 0.0, 0.0, 0.0,
    0.0, 0.0, 0.0, 0.0,
    0.0, 5.3, 0.0, 2.0,
    0.5, 7.2, 4.5, 8.5,
    6.0, 1.0, 1.3, 0.3,
    1.5, 0.0, 8.0,17.5,
    0.0, 3.5, 1.0, 3.0,
    3.3,30.5, 0.0, 0.0,
    0.0, 4.6, 0.0, 1.8,
    0.0, 2.5, 2.1, 0.0,
    0.0, 0.0, 0.0, 0.0,
    0.0, 0.0, 0.0, 0.0,
    0.7, 0.0, 7.2, 1.1,
    0.2, 0.3, 5.2, 2.0,
    1.2, 0.4, 0.0,11.5,
    9.9
};

double snowFeb[] =
{ 
    0.0, 0.0, 0.0, 5.5,
    0.0, 0.0, 0.0, 0.0,
    0.0, 0.0, 0.0, 0.0,
    0.0, 5.3, 0.0, 2.0,
    0.5, 7.2, 4.5, 8.5,
    6.0, 1.0, 1.3, 0.3,
    1.5, 0.0, 8.0,17.5,
    0.0, 3.5, 1.0, 3.0,
    3.3,30.5, 0.0, 0.0,
    0.0, 4.6, 0.0, 1.8,
    0.0, 2.5, 2.1, 0.0,
    0.0, 0.0, 0.0, 0.0,
    0.0, 0.0, 0.0, 0.0,
    0.7, 0.0, 7.2, 1.1,
    0.2, 0.3, 5.2, 2.0,
    1.2, 0.4, 0.0,11.5,
    9.9 
};

double snowMar[] =
{ 
    2.9, 0.0, 0.0, 0.0,
    0.0, 0.0, 0.0, 0.0,
    0.0, 0.0, 0.0, 3.5,
    0.0, 0.6, 0.0, 0.0,
    2.0, 0.0, 0.0, 0.6,
    2.0, 0.5, 0.0, 0.0,
    4.0, 0.0, 0.0, 4.0,
    0.0, 2.5, 0.0, 0.0,
    0.0, 0.0, 0.0, 0.0,
    0.0, 0.0, 0.0, 0.0,
    0.8, 0.0, 1.7, 3.5,
    2.5, 0.0, 0.0, 0.0,
    0.0, 0.0, 0.0, 0.0,
    0.0, 0.8, 0.0, 0.0,
    3.2, 0.3, 0.0, 0.0,
    0.0, 1.3, 3.1, 4.0,
    0.0 
};
    
    double sum = 0;
    double largest = 0;
    for (int i = 0; i < years.length; i  )
    {
        
        sum = (snowJan[i]   snowFeb[i]   snowMar[i]);
        if(sum > largest)
        {
            largest = sum;
        }
    }
    System.out.println(largest);
}
  

}

Ответ №1:

Вам нужно будет сохранить индекс того, где были наибольшие значения (в вашем случае i )

 double sum = 0;
double largest = 0;
int index = 0;
for (int i = 0; i < years.length; i  )
{
    
    sum = (snowJan[i]   snowFeb[i]   snowMar[i]);
    if(sum > largest)
    {
        largest = sum;
        index = i;
    }
}
System.out.printf("%f amount of snow fell in %s %n", largest, years[index]);