1 回答

TA贡献1842条经验 获得超12个赞
这里有一些问题。首先,您使用%d了表示整数值的 ,而您使用的是浮点值(使用%f)。
此函数:fmt.Fscanf(r, "%d %d", &width, &height)返回两个值。第一个值是它成功解析的项目数,第二个值是一个错误。您应该始终检查返回的错误是否不是nil,这意味着有错误:
func main() {
var wallCount int
var width, height, area float64
var r = bufio.NewReader(os.Stdin)
fmt.Print("WallCount:")
fmt.Scanf("%d", &wallCount)
fmt.Printf("wallcount = %v \n", wallCount)
for x := 1; x <= wallCount; x++ {
fmt.Printf("wight, height at %v times\n", x)
_, err := fmt.Fscanf(r, "%f %f\n", &width, &height)
if err != nil {
log.Println(err)
return
}
area += width * height
}
fmt.Printf("area = %v\n", area)
}
在这种情况下,错误非常清楚地描述出了什么问题,即:bad verb '%d' for float64。在 go 中,这种检查错误是否为 nil 的形式非常常见,您应该始终检查错误。
- 1 回答
- 0 关注
- 104 浏览
添加回答
举报