我的2D阵列出了什么问题?

时间:2016-02-18 14:20:51

标签: java arrays

我用Java编写了一个代码,用于匹配类中的情侣(用于分配或坐着或任何东西),所以我使用了2D数组。 BlueJ告诉我在我的代码的最后一个循环中有一个ArrayOutOfBoundsException,我没有设法解决它。 谁能告诉我如何解决它?

    byte pref;
    System.out.println("How many children are in your class");
    byte children = reader.nextByte();
    byte[][] students = new byte[children][children]; //Each cell contains the rank of the match
    System.out.println("Enter each child's preference, according to their number:");
    for (byte b=0;b<students.length;b++)//Ranks each match
    {
        System.out.print((b+1)+") ");
        pref = reader.nextByte();
        pref--;
        students[b][pref]++;
    }
    System.out.println("The matches got 2 points are:");
    for (byte b=0;b<students.length;b++)
    {
        for (byte c=0;c<students.length;b++)
        {
            if (students[b][c]==2)
                    System.out.print(b+"+"+c);
        }
    }

由于

3 个答案:

答案 0 :(得分:0)

嵌套循环中的错字错误 变化

for (byte c=0;c<students.length;b++)

 for (byte c=0;c<students.length;c++)

答案 1 :(得分:0)

for (byte b=0;b<students.length;b++){
  for (byte c=0;c<students.length;/*b++*/c++)
        {
            if (students[b][c]==2)
                    System.out.print(b+"+"+c);
        }
}

抛出OutOfBoundsException,因为你在第二个循环中增加b,所以当第一个循环在它的最后一次运行时,你再次增加b然后超出界限。

答案 2 :(得分:0)

除了拼写错误,你应该写学生[b] .length

setdiff(c(1, 3, 5, 7, 11) + 2i, 1:10 + 2i)
#[1] 11+2i

cx_setdiff(c(1, 3, 5, 7, 11) + 2i, 1:10 + 2i)
#[1] 11+2i

setdiff(c(1, 3, 5, 7) + 2i, 1:10 + 2i)
#complex(0)

cx_setdiff(c(1, 3, 5, 7) + 2i, 1:10 + 2i)
#complex(0)

,因为你想要嵌套数组的长度。