如何正确地为我的java ArrayList赋值?

如何正确地为我的java ArrayList赋值?,java,arraylist,Java,Arraylist,M是ArrayList的ArrayList(2D ArrayList)。 我有这个代码,我想做的是将值“resp”分配给变量“valor”,在M中的特定位置,但是指令: M.get(i).get(d).valor = resp; 将“resp”的值分配给所有数组位置,而不仅仅是我想要的一个,它位于位置I,d。 为什么会这样 int d = 5; for(int i = 0; i < f; i++){ resp = Leer.nextFloat();

M是ArrayList的ArrayList(2D ArrayList)。
我有这个代码,我想做的是将值“resp”分配给变量“valor”,在M中的特定位置,但是指令:

M.get(i).get(d).valor = resp;  
将“resp”的值分配给所有数组位置,而不仅仅是我想要的一个,它位于位置
I
d
。 为什么会这样

int d = 5;
for(int i = 0; i < f; i++){            
    resp = Leer.nextFloat();            
    M.get(i).get(d).valor = resp;
}
intd=5;
对于(inti=0;i
For循环在其块内重复代码,直到条件失败

您的情况是i小于f。考虑i=0并假设f是ArrayList的ArrayList中的最后一个元素,那么代码所做的是:

在幕后发生了这样的事情:

M.get(0).get(d).valor = resp;
M.get(1).get(d).valor = resp;
...
M.get(f-1).get(d).valor = resp;
因此,您正在编辑arrayList的所有值。如果你知道确切的位置,不要使用for循环。插入编号: e、 g.M.get(0.get(d.valor=resp)

如果您不知道该职位,则:

int d=5

    int d = 5;
    for(int i=0;i<f;i++){            
        resp = Leer.nextFloat();
        if(M.get(i).get(d) == valor)
            M.get(i).get(d).valor = resp;
    }
intd=5;

对于(int i=0;IBE),因为您正在数组列表上循环并更改其所有元素。我猜valor是一个静态字段,而不是一个实例字段。发布包含此字段的类。请遵守Java命名约定,为变量选择好的名称(如
矩阵
行长度
),并且不使用公共字段。可能是M中的许多位置都有相同的对象实例。问题是我确实希望编辑arrayList的所有值,但为每个值指定不同的“resp”(resp从键盘读取)。我一步一步地运行程序,我注意到只有一次执行M.get(I).get(d).valor=resp;会将相同的值分配给所有ArrayList,甚至不会再次输入for。@Setrakus您也必须添加读取for循环中输入的代码:for(…){resp=in.readLine();M.get(I).get(d).valor=resp;}