错误:需要数组,但找到了String

时间:2014-11-29 08:30:36

标签: java arrays

我已经为name和id声明了公共静态数组:

public static String[] name = new String[19];     
public static int[] id  = new int[19];

java compiler说:

java:70: error: array required, but String found
java:71: error: array required, but int found

我不知道出了什么问题。是我如何声明变量或我写的方法?

public static boolean add(String name, int id, int i) 
{
    if (i < 20) {
        name[i] = name;
        id[i] = id;
        return true;
    }
    else if (i > 20) {
        for (int j = 0; j < id.length; j++) {
            if (id[j] == 0 && name[j].equals("null"))
                id[j] = id;
            name[j] = name; 
        }
        return true;
    }
    else
        return false;
}

2 个答案:

答案 0 :(得分:2)

支持密切关注以了解您如何使用变量。 name(在您的方法内部)是String,但您正在对其执行数组元素访问。与iid也是如此;它是int,但您正在对其进行数组元素访问。

你有效地遮蔽你的静态变量,这会导致混乱和心痛。

考虑将参数重命名为方法,或使用类名引用它们。

或者:

public static boolean add (String theName , int theIds, int i)

或:

// for every usage of id and name as arrays
MyClass.name[i]= name;
MyClass.id[i]=id;

答案 1 :(得分:2)

静态name String数组与传递给name方法的本地add String变量之间发生冲突。

最好的解决方案是使用不同的名称。它会使代码更容易理解。

如果仍然坚持使用相同的名称,则可以通过使用类名访问静态数组来解决名称冲突:

YourClassName.name[i]= name;

这同样适用于您的id int数组和id int变量。