使用5尝试这个简单的控制台输入后,结果显示为53
printfn "Enter no. of blocks: "
let nBlock = System.Console.Read()
printfn "entered value is %O" nBlock
在互动上尝试过,但结果仍然是错误的。有什么解决方案吗?
答案 0 :(得分:10)
你应该尝试类似的东西:
printfn "Enter no. of blocks: "
let nBlock = System.Console.ReadLine() |> System.Int32.Parse
printfn "entered value is %d" nBlock
说明:
你的代码只能读取一个字符 - 正如李提到的那样 使用它,您将读取一行(按返回后结束)并将该字符串解析为int。
备注:也许你想要检查一个数字,你可以用TryParse来做到这一点:
printfn "Enter no. of blocks: "
let nBlock =
match System.Console.ReadLine() |> System.Int32.TryParse with
| true, n -> n
| false, _ -> -1
printfn "entered value is %d" nBlock
当然,您必须检查错误情况(-1)或将其更改为选项或其他内容。
答案 1 :(得分:8)
System.Console.Read()
返回int
,因此nBlock
包含输入字符“5”的int表示形式,即53.您可以将其转换回char
使用Convert.ToChar
。由于每个字符都是单独返回的,因此您需要将其包装到循环中以处理整个输入,如in this article所述。
更好的方法可能是使用Console.ReadLine()
读取整行并将其解析为int
。