我正在尝试从标准输入读取输入
3 2 1<ENTER>
并将其保存在整数列表中。目前我的代码如下所示:
nums = make([]int, 0)
var i int
for {
_, err := fmt.Scan(&i)
if err != nil {
if err==io.EOF { break }
log.Fatal(err)
}
nums = append(nums, i)
}
目前程序永远不会离开 for 循环。我找不到一种简单的方法来检查文档中的换行符。我该怎么做?
Edit:
因为我知道几乎肯定会有四个数字,所以我尝试了以下操作:
var i0,i1,i2,i3 int
fmt.Scanf("%d %d %d %d\n", &i0, &i1, &i2, &i3)
但这只扫描了第一个数字,然后退出程序。我不确定这是否是因为我使用的 z-shell 造成的。
Edit:
为了澄清这一点,程序将暂停并要求用户输入由空格分隔并以换行符终止的 n 个数字的列表。这些数字应该存储在一个数组中。
好吧,我决定拿出大bufio锤子,这样解决:
in := bufio.NewReader(os.Stdin)
line, err := in.ReadString('\n')
if err != nil {
log.Fatal(err)
}
strs := strings.Split(line[0:len(line)-1], " ")
nums := make([]int, len(strs))
for i, str := range strs {
if nums[i], err = strconv.Atoi(str); err != nil {
log.Fatal(err)
}
}
它看起来确实有很多代码,但它确实有效。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)