Java 向数组值添加对象

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[

我不确定标题是否与我的问题正确相关,请随意修改!:)

我想做的是,访问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[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]。无法执行访问的
。因为您正在尝试