用5尝试此简单的控制台输入后,结果显示为53

printfn "Enter no. of blocks: "
let nBlock = System.Console.Read()
printfn "entered value is %O" nBlock


在交互式上尝试过它,仍然得到错误的结果。有什么解决办法吗?

最佳答案

您应该尝试类似的方法:

printfn "Enter no. of blocks: "
let nBlock = System.Console.ReadLine() |> System.Int32.Parse
printfn "entered value is %d" nBlock


说明:

您的代码只能读取一个字符-如Lee所述
这样,您将读取一行(按回车键后结束)并将该字符串解析为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)或将其更改为选项或其他内容。

关于f# - 控制台输入提供虚假值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11081509/

10-13 06:44