JAVA使用Scanner从输入流中递归添加

时间:2015-08-31 23:47:05

标签: java recursion

我正在尝试编写一个方法的定义,该方法接收对与仅包含整数的输入流相关联的扫描程序对象的引用。该方法应读取剩余要从流中读取的所有整数并返回它们的总和。因此,如果输入为3 51 204 17 1040,则返回值应为1315.此方法应在没有任何循环的情况下递归完成。

不幸的是我无法访问正在读取的文件,但是当我尝试运行该方法时,我没有收到任何错误,但我的输出出错了。从一个有1 2 3的文件我得到129作为输出而不是6和从一个文件有3 51 204 17 1040我得到1444作为输出而不是1315.任何建议我出错的地方将不胜感激

git reset --soft HEAD^

1 个答案:

答案 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
}