【发布时间】:2021-08-14 12:31:03
【问题描述】:
我已经有了这个任务的解决方案,这段代码通过了测试。但我不明白。
而我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 If is.read() 方法返回输入数字的字节表示而不是某些数字?
应该是 49 + 50 + (10 的字节表示是什么?) = 大于 13
【问题讨论】:
-
具体取决于您的流中包含的内容。
-
在输入流周围包裹一个
DataInputStream并使用readInt直接从中读取整数。 -
@JohannesH。这假设有人以二进制补码和大端序将整数写入流。
-
@Boris 如果不是这样,所提出的解决方案也将不起作用。
-
所以它只是每 8 位读取一次流,而不是您想象的每一个数字,它是二进制的,而不是十进制的
标签: java inputstream