数组按5和3计数,然后添加数组

时间:2014-11-19 04:03:12

标签: java

我有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个整数限制视为一个范围。任何帮助都会很棒,谢谢。

3 个答案:

答案 0 :(得分:3)

问题在这里

for (int i=5; i <=iX.length; i+=5)
                 ^

您的数组中没有与iX.length匹配的索引。

数组的索引以0开头,因此,如果数组的大小为n,那么您只有0n-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,那么您的第一个循环应如下所示:

&#13;
&#13;
      for (int i=0; i < iX.length; ++i)
      {
          iX[i] = (i + 1) * 5;
          System.out.print (iX[i] + "\n");
      }          
&#13;
&#13;
&#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]