この単純なコンソール入力を 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
説明:
あなたのコードは1文字だけを読み取ります.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()
を返すint
ため、入力文字 '5' の int 表現 (53) が含まれます。それを usingnBlock
に戻すことができます。各文字は個別に返されるため、この記事で説明されているように、入力全体を処理するためにループにラップする必要があります。char
Convert.ToChar
より良いアプローチは、おそらく を使用Console.ReadLine()
して行全体を読み取り、それを に解析することint
です。