console - 为什么输出以 asci 码而不是整数打印?dart
问题描述
我不知道为什么输出以 ascii 代码而不是整数值打印,我的代码有什么问题?
import 'dart:io';
void main() {
int n = 0;
print("input: ");
do {
n = stdin.readByteSync();
} while (n>1000 || n<0);
if (n % 4 == 0) {
print("output: ");
print(n);
n++;
} else {
print("output: ");
n--;
print(n);
}
}
解决方案
粘贴您的代码,以便更轻松地为您提供帮助。如果您愿意,我可以给您一个固定的源代码。
相反,我将尝试解释:您的标准输入将作为字符串提供,您将其读取为字节,因此5
将以35
十六进制形式提供。当你打印它时,我的猜测是它会自动转换为十进制值(53,输出显示 52 因为53 % 4 = 1
然后n--
在打印之前减少它所以它变成52
)。像您所说的ASCII Table的那些数字。为了修复它,请确保您具有输入 (stdin) 的字符串表示形式。然后将值转换为整数:"2".toInt()
编辑:我可以很容易地找到完整的解决方案,您需要先将 stdin 作为字符串获取:readLineSync并将其转换为 int:
n = int.parse(stdin.readLineSync());
注意:代码未经测试,但非常简单。
推荐阅读
- c - C如何将字符串哈希函数与布尔值结合起来?
- apache-flink - 大小约为 50Mb 的侧输入导致长时间的 GC 暂停
- eclipse - 关于 egit 和 github/travis 的问题
- c++ - 如何恢复默认项目设置
- r - 如何计算(在 R 中)范围差中的范围以检查 0 是否在此范围内?
- javascript - 将具有类 ID 和图像的 div 附加到容器
- git - 在合并冲突期间运行差异时,有没有办法查看文件更改的时间戳?
- ios - 扩展或不扩展时仅重新加载表格视图的一部分 - Swift
- node.js - 如何为节点包创建离线安装程序?
- unity3d - 如何使用放大着色器编辑器在着色器 glsl 中创建生成器类