2015-12-02 33 views
-2
package main 

import (
    "fmt" 
    "bufio" 
    "os" 
    "strconv" 
    "math" 
) 

func main() { 
    var inpA = bufio.NewScanner(os.Stdin) 
    var inpB = bufio.NewScanner(os.Stdin) 
    var inpC = bufio.NewScanner(os.Stdin) 
    fmt.Print("input A value: ") 
    inpA.Scan() 
    fmt.Print("input B value: ") 
    inpB.Scan() 
    fmt.Print("input C value: ") 
    inpC.Scan() 
    cal(inpA.Text(),inpB.Text(),inpC.Text()) 
} 

func cal(INP1, INP2, INP3) string{ 
    b := INP2 
    a := INP1 
    c := INP3 
    e := 4 
    la := 2 
    a2 := float64(e)*float64(a) 
    b2 := float64(b*b) 
    ac := float64(e)*float64(a)*float64(c) 
    q := math.Sqrt(math.Abs(b2-ac)) 
    x := q/a2 
    Rx := x 
    fmt.Print("x = " + strconv.Itoa(Rx)) 
} 

我在做什么错?我只想将输入传递给func cal。此外,我在印刷Rx时遇到问题。因为它是一个浮动。那么如何将x/RX更改为非浮点型?如何通过golang中的变量

+6

你的函数参数没有类型,但是这个代码还有很多其他的问题。从[docs]开始(https://golang.org/doc/) – JimB

回答

0

@JimB已经指出func cal没有参数类型。此外,它还有其他问题,如:CAL作为字符串

  • 为了使用A,B和C,转换设置也值为float64
  • 拉不使用
  • 的FUNC

    1. 设定的参数类型
    2. Rx需要转换为字符串
    3. func没有返回任何东西。

    看这个更新的功能:

    func cal(INP1, INP2, INP3 string) string{ 
        b,_ := strconv.ParseFloat(INP2, 64) 
        a,_ := strconv.ParseFloat(INP1, 64) 
        c,_ := strconv.ParseFloat(INP3, 64) 
        e := 4 
        la := 2 
        a2 := float64(e)*float64(a) 
        b2 := float64(b*b) 
        ac := float64(e)*float64(a)*float64(c) 
        q := math.Sqrt(math.Abs(b2-ac)) 
        x := q/a2 
        Rx := x 
        fmt.Print("x = " + strconv.FormatFloat(Rx, 'f', 6, 64)) 
        fmt.Print(la) 
        return "return value" 
    } 
    

    现在我已经使用LA,通过打印。