我已经为患者安排了时间表。我已经将其中的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

最佳答案

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

因此timeslot[0*160 + i] = timeslot[1*160 + i] = timeslot[2*160 + i]

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

关于java - Java:如何在循环中分配变量值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55865227/

10-15 13:27