我试图将鼠标的X轴位置和鼠标的Y轴位置分别存储在二维数组中,稍后使用它但会出错。 我是数组的新手,我正在尝试使用for循环和实例变量/全局变量初始化一个二维数组。我得到的错误说"数组常量只能用于初始化器"。我查看了文档并更改了代码但没有得到解决方案。
package com.selenium;
import java.awt.*;
public class MouseAxis {
int[][] mouseLocation ;
int AxisX;
int AxisY;
public void getAxisXAndY(int x, int y){
AxisX=x;
AxisY=y;
} // getAxisXAndY
public void mouseAxisPosition() throws AWTException{
int x , y;
PointerInfo pointer = MouseInfo.getPointerInfo();
Point point = pointer.getLocation();
x=(int)point.getX();
y=(int)point.getY();
getAxisXAndY(x,y);
} // mouseAxisPosition
public void storeMouseLocation(){
for(int i=0; i<=20; i++){
for(int j=i; j<=1; j++){
int[][] temp = new int[j][i];
temp[j][i]={AxisX,AxisY} ;
mouseLocation[j][i]=temp[j][i];
Thread.sleep(4000);
mouseAxisPosition();
} // for_2
} // for_1
} // storeMouseLocation
} // MouseAxis
答案 0 :(得分:1)
问题在于您尝试将数据存储在索引中。如果您想要一系列位置,那么您有几个选择:
拥有2个阵列
int lastLocation = 0;
int[] x = new int[10];
int[] y = new int[10];
PointerInfo pointer = MouseInfo.getPointerInfo();
Point point = pointer.getLocation();
x[lastLocation] = (int)point.getX();
y[lastLocation] = (int)point.getY();
lastLocation++;
给定索引i,您可以从数组中获取x和y值。
创建专门类型的数组
只需存储整个Point
对象:
int lastLocation = 0;
Point[] points = new Point[10];
PointerInfo pointer = MouseInfo.getPointerInfo();
Point point = pointer.getLocation();
points[lastLocation] = point;
lastLocaiton++;
答案 1 :(得分:0)
在Java中,int[][]
表示整数数组的引用数组。虽然有些语言有一个NxM整数数组的概念,但Java却没有;它最接近的将是一个N个引用的数组,它们独立地识别出不同的M项整数数组。
如果想让MouseLocation
看起来识别NxM整数数组,首先必须初始化它以识别N个引用整数数组的数组,然后初始化每个元素该数组用于标识不同的M个整数数组。例如,要将其初始化为5x7,可以执行以下操作:
mouseLocation = new int[5][];
for (int i=0; i<5; i++)
mouseLocation[i] = new int[7];
请注意,Java并未强制要求所有内部数组都是不同的,但如果不是这样,那么事情会表现得很奇怪。例如,如果有人说:
mouseLocation[2] = mouseLocation[3];
最初可能会出现从第3行复制到第2行的所有内容,但它也会产生另一种效果:mouseLocation[2]
标识的阵列上的任何操作也将对{{1}标识的数组进行操作因为它们将是相同的数组。
数组数组在Java中可能很棘手;在某些情况下,使用单个N * M元素阵列表示NxM网格可能更简单。访问代码可能不太直观(对[i,j]处的元素的访问将被写为mouseLocation[3]
)但是数组将表现为单个对象,而不是作为对象的一组引用一切都不同。