【发布时间】:2012-07-13 22:37:48
【问题描述】:
我正在尝试制作一个程序,该程序接受用户通过键盘输入的浮点数并对其进行处理。
但是,每次我尝试将输入的字符串解析为浮点数时,我都会不断出错。我尝试过的每一种方法都无法让我获取用户输入的数据并将其转换为我需要的浮点数。
我的练习计划(不是我要解决的实际问题)是:
main = do
putStrLn "Please input a number."
inputjar <- getLine
read :: read a => String -> a
putStrLn( read inputjar :: Int)
编辑
还有一个问题。
如何获取输入的字符串并将其转换为可用于计算的内容?
例如,我如何获取输入的字符串,以便我可以执行以下操作:
(var + var) / 2
【问题讨论】:
-
您能解释一下为什么您有
read :: read a => String -> a表达式吗? (这是一个严肃的问题:explaining your own code in detail 是一种非常好的理解和调试方式。) -
一个帮我的朋友告诉我把它放进去或读它是行不通的。那时我几乎尝试了任何事情,并认为这是必要的。
-
我认为这位朋友的意思是您可以使用其签名的特殊化来包装您对
read的使用,例如print ((read :: String -> Int) inputjar)(我们在这里使用 print 因为它是数字,而不是我们正在使用的字符串。)编译器已经知道read的最通用类型,即Read a => String -> a,这无助于它找出什么用户的输入方式。在这种情况下,您也可以使用print (read inputjar ::Int)——您上面的主要错误是使用了putStrLn,它只作用于字符串,而不是打印。 -
@PhilipEloy:由于“有人在此页面上回答”,请接受相关答案。如果其他人问了基本相同的问题并且答案在该问题中,请在评论中链接到它,以便我们可以关闭这个作为另一个问题的重复链接。
标签: parsing haskell input io floating-point