java - 在 MouseClicked 中使用 for-each 循环来 getX 和 getY 每个对象

标签 java nullpointerexception chess

我是一位相对缺乏经验的程序员,在使用 Java 开发国际象棋游戏期间遇到了问题。我创建了一个 Handler 类,它将各个部分保存在 LinkedList 中。我现在希望合并使用鼠标选择各个 block 并更改它们各自的 x 和 y 坐标的功能,这是移动它们所必需的。

在我的 MouseClicked() 方法中,我为 LinkedList 中的每个 Piece 对象执行一个 for-each 循环,并检查它们各自的坐标。问题就出现在这里,当循环执行时出现如下异常:

"Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException." 

如何解决这个问题?

下面是我的 MouseClicked() 中的代码:

public void mouseClicked(MouseEvent e) {
    int x = e.getX();
    int y = e.getY();
    System.out.println(e.getX() + " " + e.getY());
    if(clickMode == 0)
    {
        for(Piece pi: handler.piece)
        {
            if(x >= pi.getX() && x <= pi.getX() + 75 && y >= pi.getY() && y <= pi.getY() + 75)
            {
                System.out.println("Piece Selected");
                pi.isSelected = true;
                clickMode = 1;
            }
        }
    }
    else
    {
        for(Piece pi: handler.piece)
        {
            if(pi.isSelected == true)
            {
                System.out.println("Piece Moved");
                pi.setX(x);
                pi.setY(y);

                pi.isSelected = false;
            }                               
        }
        clickMode = 0;
    }               
}

最佳答案

导致 NullPointerException 的最可能原因是 LinkedList 中的某个位置不包含实例化片段。或者您的 handler 实例尚未实例化。确保您使用的每个对象都已构建。

关于java - 在 MouseClicked 中使用 for-each 循环来 getX 和 getY 每个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41353161/

相关文章:

android - onDestroy() 的空指针异常

python - 国际象棋编程的走棋和撤棋

java - BottomNavigationViewEx 空指针异常

android - 刷新 recyclerview 时出现 NullPointerException

java - 在后台运行应用程序并检查新数据

java - 如何使用 JasperReports 为单个报告传递多个结果集?

python - 用 Python 计算六角形棋子的有效走法

javascript - 是否有可能采用 FEN aka forsyth-edward 符号并将其从黑色翻转为 play and win to white

java - 如何通过反射从 Scala 访问 Java 静态成员?

Java + Github + Docker