我正在研究Go lang,我在尝试打印输入数组时遇到了问题。我的代码是这样的:
package main
import (
"fmt"
)
func main() {
var n int
fmt.Scan(&n)
set(n)
}
func set(n int) {
a := make([]int, n)
for i := 0; i < n; i++ {
fmt.Scan(&a[i])
}
for y := 0; y < n; y++ {
fmt.Println(a[y])
}
return
}
我的问题是当输入数字作为数组的大小时,该数字也总是被打印出来。 就像当我输入8作为数组大小然后输入数组值例如10 9 8 7 6 5 4 3然后我得到错误的输出:8 10 9 8 7 6 5 4.Iit应该是10 9 8 7 6 5 4 3。
答案 0 :(得分:1)
package main
import ("fmt")
func main() {
var n int
fmt.Scan(&n)
set(n)
}
func set(n int) {
a := make([]int, n)
for i := 0; i < n; i++ {
fmt.Scan(&a[i])
}
fmt.Println(a)
}
答案 1 :(得分:0)
无法复制问题。对于example:
package main
import (
"bytes"
"fmt"
"io"
)
func main() {
var n int
sampleInput := bytes.NewBufferString("3 1 2 3")
fmt.Fscan(sampleInput, &n)
set(sampleInput, n)
}
func set(input io.Reader, n int) {
a := make([]int, n)
for i := 0; i < n; i++ {
fmt.Fscan(input, &a[i])
}
for y := 0; y < n; y++ {
fmt.Println(a[y])
}
return
}
是您程序的变体。它具有预期的行为:它打印出读入切片的数字1 2 3。
答案 2 :(得分:0)
i:=0
var a[5] int
for(i<5){
fmt.Print("Enter Input")
var input int
fmt.Scanf("%d",&input)
a[i]=input
i+=1
}
fmt.Print(a)
这似乎对我有用。请参阅。