Haskell 将用户输入(整数)转换为条件打印语句
我试图从用户那里获取一个数值(范围为1-10),并使用条件语句(Haskell 将用户输入(整数)转换为条件打印语句,haskell,io,conditional-statements,getline,Haskell,Io,Conditional Statements,Getline,我试图从用户那里获取一个数值(范围为1-10),并使用条件语句(如果number>=1&&要删除第一个警告,请用空格替换制表符 要修复此错误,请将num添加到要删除第一个警告,请将选项卡替换为空格 要修复此错误,请将num添加到中,一个直接的问题是您编写: if num >=1 && <=3 if num >=4 && getLine <=7 else "Wrong health range indicated" 但是,我建议您查看case表达式或/和M
如果number>=1&&要删除第一个警告,请用空格替换制表符
要修复此错误,请将num
添加到要删除第一个警告,请将选项卡替换为空格
要修复此错误,请将num
添加到中,一个直接的问题是您编写:
if num >=1 && <=3
if num >=4 && getLine <=7
else "Wrong health range indicated"
但是,我建议您查看case
表达式或/和MultiWayIf
,因为这可能是编写此代码的更好方法:
health :: IO ()
health = do
putStrLn "State your health using numbers 1 - 10: "
str <- getLine
case read str of
num | num >= 1 && num <= 3 -> putStrLn "Your health is poor"
num | num >= 4 && num <= 7 -> putStrLn "Your health is OK"
num | num >= 8 && num <=10 -> putStrLn "your health is fanstastic"
_ -> putStrLn "Wrong health range indicated"
运行状况::IO()
健康=做
putStrLn“使用数字1-10说明您的健康状况:”
str=1&&num putStrLn“您的健康状况不佳”
num | num>=4&&num putStrLn“您的健康状况良好”
num | num>=8&&num putStrLn“你的健康是狂热的”
_->putStrLn“指示的运行状况范围错误”
一个紧迫的问题是您编写:
if num >=1 && <=3
if num >=4 && getLine <=7
else "Wrong health range indicated"
但是,我建议您查看case
表达式或/和MultiWayIf
,因为这可能是编写此代码的更好方法:
health :: IO ()
health = do
putStrLn "State your health using numbers 1 - 10: "
str <- getLine
case read str of
num | num >= 1 && num <= 3 -> putStrLn "Your health is poor"
num | num >= 4 && num <= 7 -> putStrLn "Your health is OK"
num | num >= 8 && num <=10 -> putStrLn "your health is fanstastic"
_ -> putStrLn "Wrong health range indicated"
运行状况::IO()
健康=做
putStrLn“使用数字1-10说明您的健康状况:”
str=1&&num putStrLn“您的健康状况不佳”
num | num>=4&&num putStrLn“您的健康状况良好”
num | num>=8&&num putStrLn“你的健康是狂热的”
_->putStrLn“指示的运行状况范围错误”
您在这里会犯一些错误,主要是类型错误:
该行:
num <- getLine
在您的第一个if
案例中:
if num >=1 && <=3
后来你写道:
if num >=1 && <=3
if num >=4 && getLine <=7
else "Wrong health range indicated"
最后,在else
stament中,您将写下:
if num >=1 && <=3
if num >=4 && getLine <=7
else "Wrong health range indicated"
您可以将putStrLn
out分解为:
health :: IO ()
health = do
putStrLn "State your health using numbers 1 - 10: "
num <- readLn :: IO Int
--putStrLn "Your health is: "
putStrLn $
if num <= 0 || num > 10 then "Wrong health range indicated"
else if num <= 3 then "Your health is poor"
else if num <= 7 then "Your health is OK"
else "your health is fanstastic"
运行状况::IO()
健康=做
putStrLn“使用数字1-10说明您的健康状况:”
num您在这里会犯一些错误,主要是类型:
该行:
num <- getLine
在您的第一个if
案例中:
if num >=1 && <=3
后来你写道:
if num >=1 && <=3
if num >=4 && getLine <=7
else "Wrong health range indicated"
最后,在else
stament中,您将写下:
if num >=1 && <=3
if num >=4 && getLine <=7
else "Wrong health range indicated"
您可以将putStrLn
out分解为:
health :: IO ()
health = do
putStrLn "State your health using numbers 1 - 10: "
num <- readLn :: IO Int
--putStrLn "Your health is: "
putStrLn $
if num <= 0 || num > 10 then "Wrong health range indicated"
else if num <= 3 then "Your health is poor"
else if num <= 7 then "Your health is OK"
else "your health is fanstastic"
运行状况::IO()
健康=做
putStrLn“使用数字1-10说明您的健康状况:”
num preferencereadLn
togetLine
+read
:当输入无法解析时,它会在异常情况下做正确的事情。在这种特殊情况下,这不重要,但养成一个好习惯。preferencereadLn
togetLine
+read
:当输入c时,它会在异常情况下做正确的事情在这种情况下,这并不重要,但这是一个很好的习惯。