为什么输出以ASCII码而不是整数打印?

时间:2018-07-19 18:59:57

标签: console dart output flutter

我不知道为什么输出是用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);
  }
}

output

2 个答案:

答案 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,然后parseint,如下所示:

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);
  }
}