Java:如何在循环中分配变量值?

时间:2019-04-26 10:01:58

标签: java

我已经创建了用于患者调度的时隙。我已经将其中的160个作为一个星期使用,但我想要一千个星期,所以对于每个时隙,我都做了一个可变的星期(int)。现在由于某种原因,每个时隙在可变周中的值都为1000。如果我在测试变量上测试相同的代码,则效果很好。有人有主意吗?

    int[] test = new int[160000];
    for(int j =0;j<1000;j++)
    {
      for(int i = 0;i < 160;i++)
     {
         timeslot[j*160 + i] = timeslot_build[i];
         timeslot[j*160 + i].set_week(j+1);
         test[j*160 + i] = (j+1);

     }      

    }


     System.out.println(test[150]);
     System.out.println(test[5166]);
     System.out.println(test[44000]);
     System.out.println(test[100000]); 

     System.out.println(timeslot[150].week);
     System.out.println(timeslot[5166].week);
     System.out.println(timeslot[44000].week);
     System.out.println(timeslot[100000].week); 

这是输出:

1 33 276 626 1000 1000 1000 1000

1 个答案:

答案 0 :(得分:2)

分配timeslot[j*160 + i] = timeslot_build[i]时,您使用相同的实例。

所以timeslot[0*160 + i] = timeslot[1*160 + i] = timeslot[2*160 + i]

您每次必须创建一个新实例。因为现在您只有160个timeslot类型的存储,并且timeslot数组存储了它们的引用。