在java中保存鼠标单击

在java中保存鼠标单击,java,Java,我试图在单击时保存鼠标位置的位置。然后我需要分析其运动以执行特定任务。我使用了mouseListener界面,当用户单击鼠标时,我将单击点添加到点阵列中。然后,当用户单击按钮时,我试图通过数组循环来分析运动,但在if(points[i]处出现空指针异常.x您不想循环整个数组——您只想循环到numPoints,因为后面的条目是空的,对吗?事实上,如果您要将一个元素与下一个元素进行比较,那么您实际上只想循环到i

我试图在单击时保存鼠标位置的位置。然后我需要分析其运动以执行特定任务。我使用了mouseListener界面,当用户单击鼠标时,我将单击点添加到点阵列中。然后,当用户单击按钮时,我试图通过数组循环来分析运动,但在
if(points[i]处出现空指针异常.x您不想循环整个数组——您只想循环到
numPoints
,因为后面的条目是空的,对吗?事实上,如果您要将一个元素与下一个元素进行比较,那么您实际上只想循环到
i
,这样在最后就有一个元素可以进行比较


考虑使用
列表
,比如
数组列表
,而不是数组——这样更容易避免类似的问题。

您不想循环所有数组——您只想循环到
numPoints
,因为后面的条目是空的,对吗?事实上,如果您要将一个元素与下一个元素进行比较的话然后,实际上您只想循环到
i
,这样您在最后还有一个可以比较


考虑使用
列表
,比如
数组列表
,而不是数组——这样更容易避免类似问题。

您必须迭代到numPoints,而不是points.length at

for(int i=0;i<points.length;i++)

对于(int i=0;i您必须迭代到numPoints,而不是points.length at

for(int i=0;i<points.length;i++)

用于(int i=0;i首先,你的循环应该在points.length-1处停止,因为你在循环i+1中使用。其次,你确定你的数组中存储了2000个点对象吗?@Amine不,我刚刚发现,我现在就更改它。非常感谢你指出。首先,你的循环应该在points.length-1处停止,因为你在循环i+1中使用。第二,你确定你的数组中存储了2000个点对象吗?@Amine不,我刚刚发现,我现在就更改它。非常感谢你指出这一点。+1指出数组不是最好的解决方案。也没有什么可以阻止
numPoints
超过2000。是的,你说得对,但实际上我使用的是ArrayList,但我没有遇到了同样的问题,所以我将其改为点阵列,但我猜问题一直循环到2000年。非常感谢,我将尝试它。+1指出阵列不是最佳解决方案。也没有什么可以防止
numPoints
超过2000。是的,你是对的,但实际上我使用的是ArrayList,但我也遇到了同样的问题我把它改成了点阵列,但我想这个问题一直持续到2000年。非常感谢,我会试试的。