首页 > 解决方案 > 如何在Java中找到InputStream中的数字总和

问题描述

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

而我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,则 sum 将为 13。

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

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

标签: javainputstream

解决方案


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

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


推荐阅读