有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我有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];
}

当我运行它时,我得到: 线程“main”java.lang.ArrayIndexOutOfBoundsException中的“异常”:20 在Quiz10RTN。main(Quiz10RTN.java:61)”

第61行为:iX[i]=i

我似乎无法让它甚至打印出20个数字,因为它似乎把我的20个整数的极限作为一个范围来处理。任何帮助都会很好,谢谢


共 (3) 个答案

  1. # 1 楼答案

    您没有正确使用数组索引(它们必须是增量的)。还可以使用^{}打印数组。我相信你想要像这样的东西

    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]
    
  2. # 2 楼答案

    您将数组索引与存储在数组中的值混淆

    例如,如果希望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;
  • # 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,...      
    }