Java 向数组值添加对象
我不确定标题是否与我的问题正确相关,请随意修改!:) 我想做的是,访问java中的mxn矩阵,同时根据特定条件标记访问的节点Java 向数组值添加对象,java,arrays,object,Java,Arrays,Object,我不确定标题是否与我的问题正确相关,请随意修改!:) 我想做的是,访问java中的mxn矩阵,同时根据特定条件标记访问的节点 //int a[][] = new int[5][5]; for(int i = 0;i< a.length;i++) //row for(int k = 0;k<a[0].length;k++) //column if((i+k) % 3 ==0 ) //condition a[
//int a[][] = new int[5][5];
for(int i = 0;i< a.length;i++) //row
for(int k = 0;k<a[0].length;k++) //column
if((i+k) % 3 ==0 ) //condition
a[i][k].visited = true;
else
a[i][k].visited = false;
但我得到了一个错误:
无法解析访问的字段或该字段不是字段
有人能帮我标记数组块吗?例如,将任何值关联到数组块,例如:
a[i][i].name = "Boston"
a[i][i].country = "India"
我正在使用的虚拟程序,类似于我的实际代码
class TestingGround {
int a[][] = new int[5][5];
boolean visited = false;
public static void main(String[] args) {
TestingGround tg = new TestingGround();
tg.runner();
}
void runner()
{
for(int i = 0;i< a.length;i++)
for(int k = 0;k<a[0].length;k++)
if((i+k) % 3 ==0 )
a[i][k].visited = true;
else
a[i][k].visited = false;
}
}
类测试场{
int a[][]=新int[5][5];
布尔值=假;
公共静态void main(字符串[]args){
TestingGround tg=新的TestingGround();
tg.runner();
}
空转轮()
{
for(int i=0;i 对于(int k=0;k您已经使用int
创建了二维数组,因此您只能将每个数组设置为整数值
为了能够设置.name
或.country
之类的内容,您需要创建一个包含需求的类对象数组
描述你的目标(注意:这只是一个简单的例子,应该改进)
然后在其他地方:
MyObject arr[][] = new MyObject[5][5];
arr[0][3].name = "SomeName";
您已经使用int
创建了二维数组,因此只能将每个数组设置为整数值
为了能够设置.name
或.country
之类的内容,您需要创建一个包含需求的类对象数组
描述你的目标(注意:这只是一个简单的例子,应该改进)
然后在其他地方:
MyObject arr[][] = new MyObject[5][5];
arr[0][3].name = "SomeName";
当您使用name[index]
符号访问数组时,您所做的就是访问数组中该索引处的对象。您可以调用此对象的方法取决于创建数组时数组的静态类型(不过,强制转换可以绕过此问题)。例如,String[]数组
意味着数组
是一个由字符串
对象组成的数组,因此如果执行数组[i]
操作,可以执行的方法就是可以对字符串
对象执行的方法
因此,如果您想以问题中描述的方式标记数组块,数组中包含的对象必须是具有所需字段的对象;在您的情况下,a
必须是具有name
和country
字段的对象数组。您将数组设置为int
数组,并且int
是原语,它们没有任何字段;因此,编译器无法理解您所说的a[i][k]是什么意思。已访问
,因此会给您一个错误
如果您有一个标志(已访问
),一个可能的选择是保留第二个数组,该数组仅标记该位置是否已访问,但这可能不是最有效的方法。当您使用名称[索引]访问数组时
notation,您要做的是访问数组中该索引处的对象。您可以调用此对象的方法取决于创建数组时数组的静态类型(不过,强制转换可以绕过此问题)。例如,String[]数组
意味着数组
是一个由字符串
对象组成的数组,因此如果执行数组[i]
操作,可以执行的方法就是可以对字符串
对象执行的方法
因此,如果您想以问题中描述的方式标记数组块,数组中包含的对象必须是具有所需字段的对象;在您的情况下,a
必须是具有name
和country
字段的对象数组。您将数组设置为int
数组,并且int
是原语,它们没有任何字段;因此,编译器无法理解您所说的a[i][k]是什么意思。已访问
,因此会给您一个错误
如果您只有一个标志(已访问
),一种可能的选择是保留第二个数组,该数组仅标记是否访问过该位置,但这可能不是最有效的方法。执行此数组需要的是对象的集合,而不是基元类型的集合
int a[][] = new int[5][5];
及
显然你不能这么做
但是这个呢
MyClass mc[][]=new MyClass[5][5];
然后您可以访问已访问的
,它是在类中为该对象声明的布尔值
class MyClass
{
public boolean Visited;
public MyClass(boolean b)
{
Visited=b;
}
}
mc[0][0]=new MyClass(true);
//Then, access that variable
mc[0][0].Visited=false;
注意:不能将任何变量与primiive值关联,因为它不是世界著名的对象
你想做的是
a[0][0]----->Say 5
a[0][0].Visited=false-------> 5.Visited=false;(OOppss!!! Dosen't make any sense.)
执行此数组需要是对象的集合
而不是基元类型
int a[][] = new int[5][5];
及
显然你不能这么做
但是这个呢
MyClass mc[][]=new MyClass[5][5];
然后您可以访问已访问的
,它是在类中为该对象声明的布尔值
class MyClass
{
public boolean Visited;
public MyClass(boolean b)
{
Visited=b;
}
}
mc[0][0]=new MyClass(true);
//Then, access that variable
mc[0][0].Visited=false;
注意:不能将任何变量与primiive值关联,因为它不是世界著名的对象
你想做的是
a[0][0]----->Say 5
a[0][0].Visited=false-------> 5.Visited=false;(OOppss!!! Dosen't make any sense.)
您不能声明int
数组并期望其中包含名为的变量。您需要创建一个对象数组
MyClass[]]myClassArray=newmyclass[5][5];
\\每个索引都指向MyClass
实例
并且您的MyClass
定义应该声明变量visitored
class MyClass{
public boolean visited;
}
您不能声明int
数组并期望其中包含名为的变量。您需要创建一个对象数组
MyClass[]]myClassArray=newmyclass[5][5];
\\每个索引都指向MyClass
实例
并且您的MyClass
定义应该声明变量visitored
class MyClass{
public boolean visited;
}
首先,a[i][k]。无法执行访问的
。因为您正在尝试