Java:不兼容的类型:ArrayList <integer>无法转换为int

时间:2016-11-13 06:07:58

标签: java arraylist

我收到一条错误,指出ArrayList无法转换为int 在我的return arr

我正在编写一个程序,我必须从文件中读取所有整数并计算它们的总和。我也处理所有异常,因此如果抛出异常,该函数应该返回0。

这是我的代码:

 public static int intFileSum(String fileName) 
    {
        ArrayList<Integer> arr=new ArrayList<Integer>();
        InputStream fis=new FileInputStream(fileName);
        Scanner s=new Scanner(fis);
        try {
            while (s.hasNextInt()) {
                arr.add(s.nextInt());
            }
        }
        catch (FileNotFoundException e) {
            return 0;
        } catch (IOException f) {
            return 0;
        } finally {
            fis.close();
            s.close();
            return arr;
        }
    }

这是我的单元测试,一旦读取文件就应该通过:

public void testSumIntsHappyPath() throws Exception
    {       
        int sum=Assignment11.intFileSum("inputs/ints1.txt");
        Assert.assertEquals(10, sum);

        sum=Assignment11.intFileSum("inputs/ints2.txt");
        Assert.assertEquals(56, sum);   
    }   

感谢任何帮助。

谢谢!

3 个答案:

答案 0 :(得分:0)

为什么你需要一个Arraylist?

你想要对数字求和,所以这样做。

 public static int intFileSum(String fileName) {
    int sum = 0;
    InputStream fis=new FileInputStream(fileName);
    Scanner s=new Scanner(fis);
    try {
        while (s.hasNextInt()) {
            sum += s.nextInt();

然后,return sum

答案 1 :(得分:0)

ArrayList.add()没有进行总和操作。它将元素添加到列表中。

参考:https://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html#add(E)

使用以下代码:

result = result + s.nextInt()

而不是: arr.add(s.nextInt());

在循环之外声明int result并返回result而不是arr

答案 2 :(得分:0)

到目前为止,您所做的只是读取文件中的所有数据并将其放入数组中(add方法向数组添加元素,它不计算任何总和)。然后尝试返回arr数组,但方法返回类型是int,这导致错误。

相反尝试这样的事情(我不认为你甚至需要数组,除非你打算以后再用它):

int TOTAL = 0;
while (s.hasNextInt()) {
    TOTAL += s.nextInt();
}

然后代替&#34;返回arr;&#34;你想:

return TOTAL; 

注意:您可能还需要为有效输入添加一些检查。