我收到一条错误,指出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);
}
感谢任何帮助。
谢谢!
答案 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;
注意:您可能还需要为有效输入添加一些检查。