Java中数组索引出错

时间:2013-10-14 22:17:33

标签: java arrays

为什么它不起作用? 附:我是Java的初学者。

int userInfo[];
userInfo = new int[2];
userInfo[0] = 11;
userInfo[1] = 20;
userInfo["result"] = userInfo[0] + userInfo[1];

System.out.println(userInfo["result"]);

5 个答案:

答案 0 :(得分:9)

只有int可以是数组的索引。 String不起作用。如果您需要3个插槽,请将您的阵列声明为长度3,然后您可以使用userInfo[2]

JLS, Section 10.4非常清楚:

  

数组必须用int值索引; short,byte或char值也可以用作索引值,因为它们受到一元数字提升(§5.6.1)并成为int值。

答案 1 :(得分:4)

int userInfo[];
userInfo = new int[2];
userInfo[0] = 11;
userInfo[1] = 20;
int result = userInfo[0] + userInfo[1];

System.out.println(result);

字符串不能是数组中的索引。

答案 2 :(得分:2)

您的阵列有2个插槽,您用它们来存储数字。要获得总和,请执行以下操作:

int sum = userInfo[0] + userInfo[1];

此外,即使您的阵列有第三个插槽,您也只能通过其数字索引(在本例中为0,1或2)访问各个元素。不是String之类的结果。

答案 3 :(得分:2)

在java中,数组只有零和正整数索引。这意味着只能使用0到数组的大小减去1来访问数组。

如果你想做类似的事情:

userInfo["result"] = userInfo[0] + userInfo[1];

您可以尝试以下操作:

int result = userInfo[0] + userInfo[1];
System.out.println(result);

或:

Map<String,Intgeer> example = new HashMap<String,Intgeer>();
example.put("result", new Integer(userInfo[0] + userInfo[1]));
System.out.println(example.get("result"));

答案 4 :(得分:1)

正如我在评论中提到的,这里有几个问题。你在这里声明了一个int数组:

int userInfo[];

然后尝试在此处传递string(这将无效):

userInfo["result"];  // This is bad news

您清理过的代码应如下所示:

int userInfo[];
userInfo = new int[2];
userInfo[0] = 11;
userInfo[1] = 20;
int sumArrayValues = userInfo[0] + userInfo[1];

System.out.println(sumArrayValues);

快乐的编码!