Как печатать цикл while, вызывая метод объекта в другом классе - PullRequest
0 голосов
/ 07 октября 2019

Я получаю эту ошибку при запуске приложения:

Исключение в потоке "main" java.lang.IllegalAccessError: класс whileLoop попытался получить доступ к полю LoopClass.x (покаLoop находится в безымянном модуле загрузчикаcom.sun.tools.javac.launcher.Main $ MemoryClassLoader @ 782663d3; LoopClass находится в неназванном модуле загрузчика 'app') в WhileLoop.main (WhileLoop.java:11)

I

public class WhileLoop {
    LoopClass loopObj; //bring loopObj as new attribute for the WhileLoop class of type 'CodePractice'

    public WhileLoop() {    //constructor
    }

    public static void main(String[] args) {

        LoopClass loopObj = new LoopClass();
        loopObj.whileLoop(loopObj);
        System.out.println(loopObj.x);
    }

}

public class LoopClass {
int x;
    public LoopClass() {
        int x = 1;
    }

    public static void main(String[] args) {
    }

    public void whileLoop(LoopClass loopObj) {   //pass loopObj as a parameter of whileLoop
        loopObj.x = 1;
        while (loopObj.x < 5) {
            loopObj.x++;
        }

    }
}

Я хочу напечатать содержимое цикла while, вызывая метод объекта. Как бы я это сделал?

Ответы [ 2 ]

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

Ошибка может быть обойдена путем объявления whileLoop равным static, передачи int x в качестве параметра LoopClass, присвоения ему значения this.x и, наконец, вызова метода для объекта loopObj. Спасибо, Сачин Санни.

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

Включаете ли вы оба этих открытых класса в один файл Java? Только один класс может быть отмечен как открытый. Также я бы изменил конструктор вашего класса цикла так, чтобы он принимал аргумент, чтобы вам не приходилось устанавливать значение x в вашем whileLoop ().

public LoopClass(int x){ this.x = x; }

...