我开始通过在线教程自学 Java,但很难理解在这种情况下我应该做什么:
任务:“更改数字中的值,这样它就不会引发错误。”
public class Main {
public static void main(String[] args) {
int[] numbers = {1, 2, 3};
int length = numbers[3];
char[] chars = new char[length];
chars[numbers.length + 4] = 'y';
System.out.println("Done!");
}
}
我检查了解决方案,但仍然不明白错误是什么以及如何修复它:
public class Main {
public static void main(String[] args) {
int[] numbers = {1, 2, 3};
int length = numbers[2];
char[] chars = new char[length];
chars[numbers.length - 1] = 'y';
System.out.println("Done!");
}
}
编辑: 我现在明白了 3 变成 2,但为什么要把 +4 变成 -1?
最佳答案
让我们逐行分析。
int[] numbers = {1, 2, 3};
这将创建一个包含 3 个元素的数组。第一个是 1,第二个是 2,第三个是 3。
int length = numbers[3];
我们了解到,数组的长度是 3。由于第三个元素的值也是 3,因此您使用该值。但是数组的索引从 0 开始,所以 numbers[3]
(3 是索引)会导致错误。 numbers[0]
是 1,numbers[1]
是 3,numbers[2]
是 3。numbers[3]
是错误的。
char[] chars = new char[length];
这将创建一个新数组,这次不是数字数组,而是字符数组。例如 'a'
、'b'
或 'y'
。数组长度为3。
chars[numbers.length + 4] = 'y';
numbers.length
是 3。加上 4 是 7。如您所知,索引 7 指的是数组的第八个元素。由于 chars
只有 3 个元素长,这会导致错误。因此,我们必须将 4 更改为与 3 相加时小于 3 但大于或等于 0 的值。因此您可以将其更改为 -1、-2 或 -3。
System.out.println("Done!");
这只会输出“完成!”到控制台,这里没有魔法。
关于java - 有人可以解释为什么对我的数组进行这些特定更改可以修复我的错误吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29309845/