0

运行应用程序时出现此错误:

线程“主”java.lang.IllegalAccessError 中的异常:WhileLoop 类试图访问字段 LoopClass.x(WhileLoop 位于加载程序 com.sun.tools.javac.launcher.Main$MemoryClassLoader @782663d3 的未命名模块中;LoopClass 位于未命名模块中WhileLoop.main(WhileLoop.java:11) 处的加载程序“应用程序”)

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 循环的内容。我该怎么做?

4

2 回答 2

0

可以通过将 whileLoop 声明为staticint x作为 LoopClass 的参数传递,为其分配值“this.x”,最后调用对象“loopObj”的方法来规避该错误。谢谢萨钦·桑尼。

于 2019-10-08T13:01:06.990 回答
0

您是否将这两个公共类都包含在一个 java 文件中?只有一个类可以标记为公开。此外,我会更改循环类的构造函数以接收参数,这样您就不必在 whileLoop() 中设置 x 值。

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

于 2019-10-07T14:45:13.793 回答