首页 > 解决方案 > 为什么输出以 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);
  }
}

输出

标签: consoledartoutputflutter

解决方案


粘贴您的代码,以便更轻松地为您提供帮助。如果您愿意,我可以给您一个固定的源代码。

相反,我将尝试解释:您的标准输入将作为字符串提供,您将其读取为字节,因此5将以35十六进制形式提供。当你打印它时,我的猜测是它会自动转换为十进制值(53,输出显示 52 因为53 % 4 = 1然后n--在打印之前减少它所以它变成52。像您所说的ASCII Table的那些数字。为了修复它,请确保您具有输入 (stdin) 的字符串表示形式。然后将值转换为整数:"2".toInt()

编辑:我可以很容易地找到完整的解决方案,您需要先将 stdin 作为字符串获取:readLineSync并将其转换为 int:

n = int.parse(stdin.readLineSync());

注意:代码未经测试,但非常简单。


推荐阅读