1 回答

TA貢獻(xiàn)1842條經(jīng)驗(yàn) 獲得超13個(gè)贊
這里有一些問(wèn)題。首先,您使用%d了表示整數(shù)值的 ,而您使用的是浮點(diǎn)值(使用%f)。
此函數(shù):fmt.Fscanf(r, "%d %d", &width, &height)返回兩個(gè)值。第一個(gè)值是它成功解析的項(xiàng)目數(shù),第二個(gè)值是一個(gè)錯(cuò)誤。您應(yīng)該始終檢查返回的錯(cuò)誤是否不是nil,這意味著有錯(cuò)誤:
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)
}
在這種情況下,錯(cuò)誤非常清楚地描述出了什么問(wèn)題,即:bad verb '%d' for float64。在 go 中,這種檢查錯(cuò)誤是否為 nil 的形式非常常見(jiàn),您應(yīng)該始終檢查錯(cuò)誤。
- 1 回答
- 0 關(guān)注
- 129 瀏覽
添加回答
舉報(bào)