我已经为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;
}
答案 0 :(得分:2)
支持密切关注以了解您如何使用变量。 name
(在您的方法内部)是String
,但您正在对其执行数组元素访问。与i
。 id
也是如此;它是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变量。