有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

早期Abacus程序错误:线程“AWTEventQueue0”java中出现异常。lang.NullPointerException

我试图为初学者编程课程创建一个简单的算盘,但遇到了一个我根本无法理解的错误。我在谷歌搜索过,但至今没有成功。该程序将在Textpad中编译得非常好,首先它将运行良好,显示网格并能够理解鼠标所在的列。但是,左键单击以运行addCounter方法会导致“线程中的异常”AWT-EventQueue-0“java.lang.NullPointerException”错误。它指引我到AbacusPanel的第50行。java,即:

myAbacus.addCounter(thisCol);

我一辈子都不知道我在这里做错了什么,所以我非常感谢你的帮助。我希望Pastebin链接是好的

AbacusPanel.java

AbacusModel.java


共 (2) 个答案

  1. # 1 楼答案

    您不会将AbacusModel赋值给构造函数中的成员变量。应该是:

    public AbacusPanel(int nc, int nr)
        {
                numCols = nc;
                numRows = nr;
                addMouseListener(this);
                this.myAbacus = new AbacusModel(numCols,numRows);
        }
    
  2. # 2 楼答案

    我无法运行它,因为我在一台没有JDK的Unix计算机上,但我要说的是,变量thisCol似乎被赋予了一个空值

    尝试将getCol更改为:

       int getCol(int x)
       {
               int r = x*numCols/getWidth();
               System.out.println(r); // is this what you expected?
               return r;
       }
    

    此外,addCounter方法返回一个布尔值,但您似乎没有测试它是否返回true或false。这可能就是为什么您得到空指针,因为它没有成功地将计数器添加到abacus