我有3个数组iX,iY和iZ,每个包含20个整数。
iX上升5,iY上升3,iZ是两者的总和。
for (int i=5; i <=iX.length; i+=5)
{
iX[i] = i;
System.out.print (i + "\n");
}
for (int j=3; j <iY.length; j+=3)
{
iY[j] = j;
}
for (int k=0; k < iZ.length; k++)
{
iZ[k] = iX[k]+iY[k];
}
当我运行它时,我得到: &#34;线程中的异常&#34; main&#34; java.lang.ArrayIndexOutOfBoundsException:20 在Quiz10RTN.main(Quiz10RTN.java:61)&#34;
第61行是:iX [i] = i;
我似乎无法打印出20个数字,因为它似乎将我的20个整数限制视为一个范围。任何帮助都会很棒,谢谢。
答案 0 :(得分:3)
问题在这里
for (int i=5; i <=iX.length; i+=5)
^
您的数组中没有与iX.length
匹配的索引。
数组的索引以0
开头,因此,如果数组的大小为n
,那么您只有0
到n-1
的索引。
您可以使用以下内容来避免异常。但是你需要考虑其他方式来存档你的目标。
for (int i=5; i <iX.length; i+=5)
修改:评论I was trying to print out "5, 10, 15, 20, 25...etc"
您可以尝试以下内容
for (int i=0; i <iX.length; i++) {
iX[i]=(i+1)*5; // now your array become 5,10,15,...
}
答案 1 :(得分:0)
您将数组索引与存储在数组中的值混淆。
因此,例如,如果您希望您的iX阵列包含20个整数5,10,15,... 100,那么您的第一个循环应如下所示:
for (int i=0; i < iX.length; ++i)
{
iX[i] = (i + 1) * 5;
System.out.print (iX[i] + "\n");
}
&#13;
答案 2 :(得分:0)
您没有正确使用数组索引(它们必须是增量式的)。您也可以使用Arrays.toString(int[])
来打印阵列。我相信你想要像
int[] iX = new int[20];
int[] iY = new int[20];
int[] iZ = new int[20];
int valfive = 5; // <-- our five increments.
int valthree = 3; // <-- the three increments.
for (int i = 0; i < iX.length; i++) {
iX[i] = valfive;
iY[i] = valthree;
iZ[i] = valfive + valthree;
valfive += 5; // <-- add 5
valthree += 3; // <-- add 3
}
System.out.println("Multiples of five: " + Arrays.toString(iX));
System.out.println("Multiples of three: " + Arrays.toString(iY));
System.out.println("Sums of fives and threes: " + Arrays.toString(iZ));
输出(格式化为SO)
Multiples of five: [5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70,
75, 80, 85, 90, 95, 100]
Multiples of three: [3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42,
45, 48, 51, 54, 57, 60]
Sums of fives and threes: [8, 16, 24, 32, 40, 48, 56, 64, 72, 80, 88, 96,
104, 112, 120, 128, 136, 144, 152, 160]