2

我已经编写了以下代码来添加 java.util 的元素。但我无法从这里继续。

enter code here
import java.io.*;
import java.util.*;
class adder
{ 
public static void main(String[] args)
{
 List<Integer> list = new ArrayList<Integer>();
 int b;
 System.out.println("Enter the number");
 InputStreamReader inp = new InputStreamReader(System.in);
 BufferedReader bnp = new BufferedReader(inp);
 list.add(Integer.parseInt(bnp.readLine()));
  for(int i=0;i<list.size();i++)
  {
  b += list[i];
  }
   System.out.println("The answer is" + b);
 }
  }

 **OUTPUT**.
  add.java:15: array required, but java.util.ArrayList<java.lang.Integer> found
  b += list[i];
4

4 回答 4

6

Java 不允许您在 ArrayLists 上使用数组索引器

 b += list[i];

是非法的。应该

 b+= list.get(i);

请参阅ArrayList API

于 2013-05-18T10:22:03.553 回答
0

This is because you are trying to access your List content as if it was an array (with list[i]). The proper way is to use : list.get(i).

于 2013-05-18T10:23:03.813 回答
0

You need to use .get() method in list to retrieve the elements from list

replace

   b += list[i];

with

 b+= list.get(i);
于 2013-05-18T10:23:10.030 回答
0

我看到的一个主要错误是您没有初始化b变量。这是一个局部变量,在使用之前必须始终初始化。您的代码甚至不会编译,因为编译器不允许这样做。

另一个错误是您只向列表/数组添加一个值(无论您喜欢什么),然后您尝试遍历值存储。对我来说毫无意义。

接下来关于您的问题,您似乎对数组和列表感到困惑。将您的数据存储在一个数组中(在这种情况下,您的 for 循环逻辑是正确的),或者如果您希望使用 List 然后迭代它以获得您想要的结果。您可以执行以下操作 -

int b = 0;
for(Integer number : list)
{
   b = b + number;
}
System.out.println("The answer is" + b);

注意:在内部,这还将创建一个列表迭代器并调用 .next() 来获取列表中的所有值。但我觉得这是一种更聪明、更好的方法。

于 2013-05-18T11:13:26.263 回答