如何正确地为我的java ArrayList赋值?
M是ArrayList的ArrayList(2D 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();
我有这个代码,我想做的是将值“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;}