я не могу быть преобразован в переменную в цикле - PullRequest
0 голосов
/ 23 октября 2019

У меня есть упражнение, в котором я должен создать метод, который принимает массив длиной 365 (дней в году) и возвращает индекс (день) с наименьшим значением (самая низкая температура). Я новичок в Java, и у меня проблемы с синтаксисом.

 public class Temperature {

    public static int coldest(double[] temperatures) {
        double coldestDay = 0;

        for (int i=0; i<temperatures.length; i++); {
            if (temperatures[i] < coldestDay) {
                coldestDay = i;
            } return coldestDay;
        }

    }

    public static void main(String[] args) {
        double[] thisYear = new double[365];

        thisYear[45] = -6;

        System.out.println(thisYear[45]);

        System.out.println(Temperature.coldest(thisYear));
        }
}

На данный момент я получаю: i cannot be resolved to a variable. Я рассмотрел некоторые вопросы с той же проблемой, но я все еще не совсем понимаю, что я делаю неправильно.

Ответы [ 4 ]

3 голосов
/ 23 октября 2019

Удалите ; после for() и переместите возврат из цикла for.

public static int coldest(double[] temperatures) {
    int coldestDay = 0;

    for (int i=0; i<temperatures.length; i++){
        if (temperatures[i] < temparatures[coldestDay]) {
            coldestDay = i;
        } 
    }
    return coldestDay;
}
0 голосов
/ 23 октября 2019

Две проблемы: i++); не должно иметь ;, а ваш return должен быть вне цикла for.

0 голосов
/ 23 октября 2019

Цикл for должен начинаться со второго элемента (**i=1**), так как coldestDay в начале имеет значение 0 index. @ THess

public static int coldest(double[] temperatures) 
{
    int coldestDay = 0;

    for (int i=1; i<temperatures.length; i++)
    {
        if (temperatures[i] < temparatures[coldestDay]) 
        {
            coldestDay = i;
        } 
    }

    return coldestDay;
}
0 голосов
/ 23 октября 2019

Вам нужен еще один эталон для температуры и для перемещения возврата в конце цикла

public static int coldest(double[] temperatures) {
    double lowestTemp = Integer.MAX_VALUE;
    int coldestDay = 0;
    for (int i=0; i<temperatures.length; i++) {
        if (temperatures[i] < lowestTemp) {
            lowestTemp = temperatures[i]
            coldestDay = i;
        } 
    }
    return coldestDay;
}

Я думаю, что ваша проблема с синтаксисом была связана с точкой с запятой после объявления fori и отсутствием послеcoldestDay целое число

Когда вы пытаетесь получить наименьшее значение, Integer.MAX_VALUE используется, чтобы убедиться, что ваше начальное значение не нарушает решение, например, если вы используете 0, что произойдет, если тамне ниже температуры, чем ноль. И наоборот для получения наибольшего значения Integer.MIN_VALUE

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...