如何将N十进制数​​作为输入并打印数字,正在写入崩溃转储:erl_crash.dump ...完成init终止于do_boot()

时间:2016-01-08 10:18:52

标签: erlang

预期输入:
4
20.0000
5.0000
0.5000
-0.5000
预期产量:
20.0000
5.0000
0.5000
-0.5000
以下是我的代码,但它抛出错误:
正在写入崩溃转储:erl_crash.dump ...已完成 init终止于do_boot()

kilo(0)->
    ok;
kilo(N) when N>0->
    {ok,[M]}=io:fread("", "~f"),
    io:format("~f~n",[M]),
    kilo(N-1).
main()->
    {ok,[M]}=io:fread("","~d"),
    kilo(M).

1 个答案:

答案 0 :(得分:1)

当输入不是浮点数时,

io:fread("", "~f")失败并出错。你可以改变它:

kilo(N) when N>0->
    case io:fread("", "~f") of
        {ok,[M]} -> io:format("~f~n",[M]);
        _ -> ok
    end,
    kilo(N-1).