我开始通过在线教程教自己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?
答案 0 :(得分:8)
让我们一行一行。
int[] numbers = {1, 2, 3};
这将创建一个包含3个元素的数组。第一个是1,第二个是2和第三个。
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个元素长,因此会导致错误。所以我们必须将四个变成一个东西,当它加到3时,小于3但大于或等于0.所以你可以将它改为-1,-2或-3。
System.out.println("Done!");
这只输出“完成!”到控制台,没有魔法。
答案 1 :(得分:0)
我认为正确的答案是改变'数字'"
中的值 int[] numbers = {1, 2, 3, 9};
或者更确切地说,添加任何大于或等于9的数字都可以。
这意味着'长度'将是9岁,#chars'数组的长度为9,元素[4(*)+ 4]的索引不会产生ArrayOutOfBoundsException
(*)4是'数字'的长度。阵列。
像这样:
public class Main {
public static void main(String[] args) {
int[] numbers = {1, 2, 3, 9};
int length = numbers[3];
char[] chars = new char[length];
chars[numbers.length + 4] = 'y';
System.out.println("Done!");
}
}
答案 2 :(得分:-1)
已经回答了这个问题,我自己的回答可能不是最好的,但是我只是注释掉chars [numbers.length + 4] ='y';。 我使它看起来像这样** // ** chars [numbers.length + 4] ='y';