我不知道为什么输出是用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);
}
}
答案 0 :(得分:2)
粘贴您的代码,以便更轻松地为您提供帮助。 如果您愿意的话,我本可以给您提供固定的源代码。
相反,我将尝试解释:
您的标准输入将以字符串形式提供,您将其以字节形式读取,因此5
将以十六进制形式出现在35
中。
当您打印它时,我的猜测是它将自动转换为十进制值(53,并且输出显示52,因为53 % 4 = 1
,然后在打印之前以n--
减小,因此成为52
)。
像您所说的ASCII Table这些数字。
为了修复它,请确保您具有输入的字符串表示形式(stdin)。然后将值转换为整数:"2".toInt()
编辑: 我可以轻松找到完整的解决方案, 您需要首先将stdin作为字符串获取:readLineSync并将其转换为int:
n = int.parse(stdin.readLineSync());
注意:代码未经测试,但是很简单。
答案 1 :(得分:1)
使用stdin.readLineSync()
获取值为String
,然后parse
到int
,如下所示:
import 'dart:io';
void main() {
int n = 0;
print("input: ");
do {
n = int.parse(stdin.readLineSync());
} while (n>1000 || n<0);
if (n % 4 == 0) {
print("output: ");
print(n);
n++;
} else {
print("output: ");
n--;
print(n);
}
}