for (int i = 0; i < totalArray.size(); i++){
studentNumber.add(Long.parseLong(totalArray.get(i * 3)))
lastName.add(totalArray.get((i * 3) + 1));
firstName.add(totalArray.get((i * 3) + 2));
我不确定这里发生了什么。我在此代码中获得了索引超出范围的错误。 totalArray.size()是42但是我在索引42处得到第二行(parseLong)的错误。
答案 0 :(得分:0)
您在i
行中将studentNumber.add(Long.parseLong(totalArray.get(i * 3)))
乘以3,所以当i&gt; = 14时,它会越界。
尝试将其设置为studentNumber.add(Long.parseLong(totalArray.get(i)))
并运行它。您可能希望将* 3
放在第一个括号之外,但我无法扣除您的逻辑。
答案 1 :(得分:0)
当i
为14时,您将获得带有i * 3
的索引42。对于大小为42的列表,这是不受限制的。
答案 2 :(得分:0)
你的第三行是这个数字的三倍。这意味着如果我是30(这对你当前的设置是可能的),那么当三倍时,将等于90,这显然高于你的最大尺寸。
你需要做
for (int i = 0; i < (totalArray.size() - 2) / 3 ; i++)
为了让您的代码正常工作。否则你的所有三条线都会在某个时刻超过最大值。
答案 3 :(得分:0)
正如cricket_007指出的那样,在你的for语句的第14次迭代中,我是14并且你的第二行试图访问索引的元素42(其中数组的最后一个元素作为元素41被访问,因为它&#39; s 0索引)。
要在适当的位置停止for语句,只需执行您在最后一行代码中执行的逆操作。
i < (totalArray.size()-2)/3
(Benjamin Lowry指出)。