我需要减去:
(2-0)和(4-2)。
我需要这个找出丢失了多少个号码。我只是第一次学习编码,从逻辑上讲,这在我看来是正确的。
只要"n“小于”(statuesstatues.ength-1)“(即"4”),代码就会减去,所以它应该停在"2“处。所以我不明白为什么我会得到这个错误:
java.lang.ArrayIndexOutOfBoundsException:索引3超出长度3的界限
实际上,如果我打印"c“,我可以看到正确的结果,但很明显,它一直在计算,因为错误行就是"c”行。
我已经将代码更改为不同的版本,它起了作用,但取决于数组中的数字,有些地方出了问题。
公共类MakeArrayConsecutive2 {
public static void main(String[] args) {
int[] statues = {0, 2, 4};
makeArrayConsecutive2(statues);
}
public static int makeArrayConsecutive2(int[] statues) {
Arrays.sort(statues);
int count = 0;
for (int n = statues[0]; n < statues[statues.length-1]; n++) {
int c = statues[n + 1] - statues[n];
System.out.println(c);
if (c != 1) {
count += c - 1;
}
}
System.out.println(count);
return 0;
}}
发布于 2020-04-29 22:42:10
这里的主要误解似乎是关于如何在for-循环中迭代某些结构。在这里,你写了
for (int n = statues[0]; n < statues[statues.length-1]; n++) {
int c = statues[n + 1] - statues[n];
}这是不正确的,因为当您尝试使用statues[statues2]时,您实际上使用的是不存在的statues4;您可能只想引用statuesn。解决这一问题的方法是将n看作一个正则整数,它接受范围[0, statues.length - 1)中的所有值。这看起来更像是
for (int n = 0; n < statues.length - 1; n++) {
int c = statues[n + 1] - statues[n];
}我希望这有帮助,如果我不正确地解释你的意图,请告诉我。
https://stackoverflow.com/questions/61512887
复制相似问题