线程“main”中的异常java.lang.ArrayIndexOutOfBoundsException:10

时间:2012-10-10 18:23:59

标签: java

当我尝试使用此方法时,我在标题中收到消息,但我找不到原因。谁可以帮助我?

谢谢!

void companyInfo() {
    int tel = 0;
    System.out.print("Name of company: ");
    String tmpCompany = sc.next();
    for (int i = 0; i < tel; i++){
        if (tmpCompany.equals(null)){
        }
    }
    for (int i = 0; i < 10; i++) {
        int count = 0;
        for (int j = 0; j < field.length; j++){
            for (int k = 0; k < field[k].length; k++){
                if (tmpCompany != (null) && field[i][j] != 0 && tmpCompany.equals(felt[i][j])){
                    count++;
                }
            }
        }
        if (tmpCompany != null && count > 0) {
            System.out.print("The company " + tmpCompany + " owns " + count + " field(s).");
        }
    }
}​

3 个答案:

答案 0 :(得分:1)

我不完全确定,因为我看到这样的一行,你的数组中有什么:

for (int k = 0; k < field[k].length; k++)

字段[K]。但是你得到错误是因为你试图在一个长度低于10的数组中找到索引10。

答案 1 :(得分:0)

此:

for (int k = 0; k < field[k].length; k++)
几乎可以肯定是:

for (int k = 0; k < field[j].length; k++)

虽然你是然后在循环体内使用field[i][j],这似乎不太可能是你想要的。我注意到你在循环中根本没有使用k。当你只有一个二维数组 1 时,你还不清楚为什么你认为你需要三级循环。

基本上,您应该根据它的外观重新审视您的循环边界和 field的每个访问权限。


1 是的,我知道它实际上只是一个数组数组。关键是它不是数组数组的数组。

答案 2 :(得分:0)

if条件下,不应该是field[j][k],如下所示:

 if (tmpCompany != (null) && field[j][k] != 0 && tmpCompany.equals(field[j][k])){