用 5 尝试这个简单的控制台输入后,结果显示为 53
printfn "Enter no. of blocks: "
let nBlock = System.Console.Read()
printfn "entered value is %O" nBlock
在交互式上尝试过,仍然得到错误的结果。请问有什么解决办法吗?
用 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)或将其更改为选项或其他内容。
System.Console.Read()
返回 an int
,因此nBlock
包含输入字符“5”的 int 表示形式,即 53。您可以将其转换回char
using Convert.ToChar
。由于每个字符都是单独返回的,因此您需要将其包装成一个循环来处理整个输入,如本文所述。
更好的方法可能是使用Console.ReadLine()
读取整行并将其解析为int
.