считая до 2 различных значений с помощью метода main и publi c stati c final int - PullRequest
1 голос
/ 23 апреля 2020

В настоящее время у меня проблемы с «практикой», и я застрял в этом: «Предположим, вы пытаетесь написать программу, которая выдает следующие выходные данные с использованием циклов. Приведенная ниже программа представляет собой попытку решения , но содержит как минимум четыре основных ошибки. Определите и исправьте их все. 1 3 5 7 9 11 13 15 17 19 21 1 3 5 7 9 11 "

public class BadNews {
    public static final int MAX_ODD = 21;

    public static void writeOdds() {
        // print each odd number
        for (int count = 1; count <= (MAX_ODD - 2); count++) {
            System.out.print(count + " ");
            count = count + 2;
        }

        // print the last odd number
        System.out.print(count + 2);
    }

    public static void main(String[] args) {
        // write all odds up to 21
        writeOdds();

        // now, write all odds up to 11
        MAX_ODD = 11;
        writeOdds();
    }
}

Я изменил код на:

public class BadNews {
    public static final int MAX_ODD = 21;

    public static void writeOdds() {
        // print each odd number
        for (int count = 1; count <= (MAX_ODD); count++) {
            System.out.print(count + " ");
            count = count +1; //tried to chacge count++ into count + 2 but it was a miss
        }
    }

    public static void main(String[] args) {
        // write all odds up to 21
        writeOdds();

        // now, write all odds up to 11
        MAX_ODD = 11;
        writeOdds();
    }
}

Я думал, что последняя проблема заключалась в том, что final int MAX_ODD должен быть перемещен в main и заменен на «обычную» переменную (int MAX_ODD), но она закончилась ошибкой и комментарием «Ваше решение должно иметь класс константа. Константа должна быть объявлена ​​как 'publi c stati c final' вне каких-либо методов в вашем классе. " Есть идеи как это решить?

Ответы [ 2 ]

0 голосов
/ 23 апреля 2020

Свойство, объявленное как final, не может изменить свое значение после того, как установлено его начальное значение. Это начальное значение является окончательным. Переменная должна оставаться на уровне класса вне любого метода, чтобы каждый метод мог получить к ней доступ. Поэтому просто удалите слово final.

0 голосов
/ 23 апреля 2020

Этот код предоставит вам ожидаемый результат.

public static void main(String[] args) {
    writeOdds(21);
    writeOdds(11);
}

public static void writeOdds(int n) {
    // print each odd number
    for (int count = 1; count <= (n); count++) {
        System.out.print(count + " ");
        count = count +1; //tried to chacge count++ into count + 2 but it was a miss
    }
}
...