[英]How to take input with whitespace distance in golang
我想根據 golang 中的空白從用戶那里獲取一些輸入。 目前的代碼是...
fmt.Scanf("%d\n", &N)
var a [10]int
for n := 0; n < N; n++ {
fmt.Scanf("%d\n", &a[n])
}
這段代碼將讓我在終端中輸入...
5
1
2
3
4
5
所以,a[] = {1,2,3,4,5} 但我想在終端中輸入...
5
1 2 3 4 5
所以,a[] = {1,2,3,4,5} 所以請幫忙找出我應該在上面的 for 循環中改變什么。
你可以嘗試這樣的事情。 這將讀入第一個數字,這是您要創建的數組的大小,然后下一行將是數組中長度為 (n) 的項目
import (
"bufio"
"fmt"
"io"
"os"
"strconv"
"strings"
)
func main() {
reader := bufio.NewReaderSize(os.Stdin, 1024 * 1024)
nTemp, err := strconv.ParseInt(readLine(reader), 10, 64)
checkError(err)
n := int32(nTemp)
arrTemp := strings.Split(readLine(reader), " ")
var arr []int32
for i := 0; i < int(n); i++ {
arrItemTemp, err := strconv.ParseInt(arrTemp[i], 10, 64)
checkError(err)
arrItem := int32(arrItemTemp)
arr = append(arr, arrItem)
}
fmt.Printf("%#v, arr", arr)
}
因此,當我嘗試使用您給定的輸入時,例如:
5
1 2 3 4 5
// I get the following:
[]int32{1, 2, 3, 4, 5}, arr
在任何特色問題中,您提出的問題似乎在Hackerrank等網站中很常見。
謝謝 martinomburajr 和 Casey Flynn。
我瀏覽了您的答案,並進行了自己的反復試驗。 終於找到了somultion。
var N int
fmt.Scanf("%d\n", &N)
a := make([]int, N)
for n := range a {
fmt.Scanf("%d", &a[n])
}
fmt.Scanf("\n")
它可以很好地滿足我的要求。 非常感謝你的幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.