我正在尝试编写一个方法的定义,该方法接收对与仅包含整数的输入流相关联的扫描程序对象的引用。该方法应读取剩余要从流中读取的所有整数并返回它们的总和。因此,如果输入为3 51 204 17 1040,则返回值应为1315.此方法应在没有任何循环的情况下递归完成。
不幸的是我无法访问正在读取的文件,但是当我尝试运行该方法时,我没有收到任何错误,但我的输出出错了。从一个有1 2 3的文件我得到129作为输出而不是6和从一个文件有3 51 204 17 1040我得到1444作为输出而不是1315.任何建议我出错的地方将不胜感激
git reset --soft HEAD^
答案 0 :(得分:0)
由于sum
是数据成员(因为static
对于手头的问题无关紧要),每次调用add
都会修改相同的变量,您最终会多次添加相同的值。相反,您应该重写该函数,以便它只使用局部变量:
public static int add(Scanner sc) {
if (sc.hasNextInt()) {
int val = sc.nextInt();
return val + add(sc);
}
return 0; // No more values in the Scanner to add
}