如何在 Java 中查找 InputStream 中的数字总和

How to find sum of digits inside InputStream in Java

我已经有了这个任务的解决方案,这段代码通过了测试。但是我看不懂。

而我don't have其他部分的代码,只有这个方法。我应该完成它并通过测试。

测试代码我也没有。

解决方法:

public static int getSum(InputStream is)  {
    int sum = 0;
    try {
        int digit = is.read();
        while (digit != -1) {
            sum += digit;
        }

    }catch (Exception e){
        e.printStackTrace();
    }
    return sum;
}

例如,如果 InputStream 包含 1,2,10,则总和将为 13。

但是程序如何找到 13 If is.read() 方法 return 输入数字而不是某些数字的字节表示?

应该是 49 + 50 +(10 的字节表示是什么?)= 大于 13

如果读取的数字以相同的二进制格式存在于输入流中 Java 使用(二进制补码,大端),将它们读入 int 将按预期工作。

但是,由于只有一个字节被读入 4byte java int,解决方案将只适用于碰巧在 32 位二进制补码表示中除了最后 8 位之外的所有位都设置为零的数字- 这是从 0 到 127 的正数。