【问题标题】:How to input an integer in haskell? (input in console)如何在haskell中输入整数? (在控制台输入)
【发布时间】:2017-02-13 21:58:11
【问题描述】:

如何在控制台中输入整数,将其存储在变量中,然后将其作为我创建的函数的参数传递?

到目前为止,我必须执行以下操作:

在最后一行你可以看到我是如何应用函数的,我想做的是通过控制台请求将变量作为整数应用到函数中,然后打印结果。

    mayor :: Int -> Int -> Double
    mayor x y =
        if  x < y 
        then 0.1
            else 0.3


    compra :: Int -> Int -> Int -> Int -> Int -> Int -> Double
    compra n v u iva p vp =
        let valor_compra = (fromIntegral v) * (fromIntegral n) * (1 - mayor n u)
            valor_iva = valor_compra * (fromIntegral iva) / 100
            valor_puntos = fromIntegral (p * vp)
            efectivo = if (valor_puntos < valor_compra) then valor_compra-valor_puntos else 0
        in  valor_iva + efectivo

    main = do
    print (compra 20 2000 7 14 10 1500)

我这样做的方式给了我结果 16920.0

【问题讨论】:

  • readLn 可能会有所帮助。

标签: haskell io


【解决方案1】:

如果在同一行输入整数,我们可以执行以下操作。下面的程序读取两个用空格分隔的数字并打印它们的总和。

main :: IO()
main = do
    line <- getLine
    let a = (read (takeWhile (/= ' ') line) :: Int)
    let b = (read (drop 1 (dropWhile (/= ' ') line)) :: Int)
    putStrLn (show (a+b)) 

【讨论】:

    【解决方案2】:

    使用getLinereadLn,然后将输入值解析为您需要的类型:

    mayor :: Int -> Int -> Double
    mayor x y =
        if  x < y 
        then 0.1
            else 0.3
    
    
    compra :: Int -> Int -> Int -> Int -> Int -> Int -> Double
    compra n v u iva p vp =
        let valor_compra = (fromIntegral v) * (fromIntegral n) * (1 - mayor n u)
            valor_iva = valor_compra * (fromIntegral iva) / 100
            valor_puntos = fromIntegral (p * vp)
            efectivo = if (valor_puntos < valor_compra) then valor_compra-valor_puntos else 0
        in  valor_iva + efectivo
    
    main = do
           putStrLn "enter value for x: "
           input1 <- getLine
           putStrLn "enter value for y: " 
           input2 <- getLine 
           let x = (read input1 :: Int)
           let y = (read input2 :: Int)
           print (compra x y 7 14 10 1500)
    

    【讨论】:

    • 非常感谢,它为我提供了完美的服务
    猜你喜欢
    • 2011-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-26
    • 1970-01-01
    • 2015-05-17
    • 2019-08-20
    • 2021-09-21
    相关资源
    最近更新 更多