我的Go语言代码输出有问题

kwvwclae  于 2022-12-16  发布在  Go
关注(0)|答案(2)|浏览(125)

我是编程新手,我正在尝试用我喜欢的语言(如Python和Go语言)做一些练习来提高我的编程逻辑。
在这个特殊的例子中,我的问题是围棋。
代码基本上应该打印以下内容:

Example

First person info:
Name: Mary
Age: 19
Second person info:
Name: John
Age: 20
The average age of Mary and John is 19.5 years

为了完成这个练习,我尝试了下面的代码:

package main

import "fmt"

func main() {
    var name1 int
    var name2 int
    var age1, age2 int
    var average float32
    fmt.Println("First person info:")
    fmt.Print("Name: ")
    fmt.Scan(&name1)
    fmt.Print("Age: ")
    fmt.Scan(&age1)
    fmt.Println("Second person info:")
    fmt.Print("Name: ")
    fmt.Scan(&name2)
    fmt.Print("Age: ")
    fmt.Scan(&age2)

    average = float32((age1 + age2) / 2)
    fmt.Printf("\nThe average age of %d and %d is %f years", &name1, &name2, &average)

}

我尝试了一些变体,试图转换一些变量,但问题是输出如下所示:
一个三个一个x一个四个一个x一个五个一个x一个六个一个x一个x一个x一个x一个
所以,代码没有一个一个地显示print函数。我回答了第一个名字(name1),很快我就回答了,输出了所有其他的,所有在一起(年龄,第二人称信息等)我尝试了所有的东西,但不知道哪里可能出错了...

kg7wmglp

kg7wmglp1#

有几件事:

  1. fmt.Print函数不会给你打印的字符串添加换行符,所以你可能想把fmt.Print("Name: ")这样的行改成fmt.Println("Name:")或者fmt.Print("Name:\n")
    1.#1在这里会有所帮助,但是你可能想看看fmt.Scanf函数,它允许你提供一个类似fmt.Scanf("%d", &age1)的格式字符串来显式地查找输入中的整数或整数。
    1.您已经将name1name2变量声明为int,我认为它们应该是string
    1.在打印出平均值的那一行中,去掉变量前面的&,这里不需要它。
    希望这能让你更接近你想去的地方。
w1jd8yoj

w1jd8yoj2#

package main

import (
"fmt"
"strconv"
)

func main() {

var name1, age1 , name2, age2 string
var average float32

fmt.Println("First person info:")
fmt.Print("Name: ")
fmt.Scan(&name1)
fmt.Print("Age: ")
fmt.Scan(&age1)
fmt.Println("Second person info:")
fmt.Print("Name: ")
fmt.Scan(&name2)
fmt.Print("Age: ")
fmt.Scan(&age2)

ageInt1, _ := strconv.Atoi(age1)
ageInt2, _ := strconv.Atoi(age2)

average = float32(( ageInt1+ ageInt2) / 2)
fmt.Printf("\nThe average age of %v and %v is %f years", name1, name2, average)

}

//output will be like
//enter code here
//First person info:
//Name: Joh
//Age: 23
//Second person info:
//Name: Doe
//Age: 34

//The average age of Joh and Doe is 28.000000 years%

相关问题