java - 如何在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
解决方案
如果读取的数字以 Java 使用的相同二进制格式(二进制补码、大端序)存在于输入流中,则将它们读入 int 将按预期工作。
但是,由于只有一个字节被读入 4byte java int,因此解决方案仅适用于碰巧在 32 位二进制补码表示中除最后 8 位以外的所有位都设置为零的数字——即从 0 到 127 的正数。
推荐阅读
- jquery - 与 Datatable 功能交互后,表格正在清空
- typescript - 如何理解 TS 代码解析的结果?
- android - 使用 Android 加速度传感器进行距离测量
- angular - Angular 5 将组件动态插入到现有标记中?
- nginx - Nginx 内部调用另一个请求并返回该请求数据
- html - 尝试使用内部 div 制作内联 div
- python - 将字节从 Twitter 抓取转换为字符串
- python - 替换数字,如果它们是一定的价值
- vb.net - 我应该如何将颜色放在 DataGridview 中的特定结果中。如果工作状态为绿色 如果不工作颜色为红色
- regex - 理解 Vim 的正则表达式引擎的问题