我正在尝试编写一个golang程序,它将对stdin行进行逐行解析,并计算每行上所有正整数的和。
随附代码:
package main
import (
"bufio"
"fmt"
"io"
"os"
"strconv"
"strings"
)
func mytest(st string) bool {
a, _ := strconv.Atoi(st)
return a > 0
}
func main() {
reader := bufio.NewReader(os.Stdin)
for {
line, err := reader.ReadString('\n')
if err == io.EOF {
// fmt.Print(line)
break
}
// fmt.Print(line)
res := 0
qq := strings.Split(line, " ")
// fmt.Println(qq)
for _, val := range qq {
if mytest(val) {
as, _ := strconv.Atoi(val)
fmt.Println(as)
res += as * as
}
}
fmt.Println(res) // [test]
}
}
我不确定为什么for循环无法到达列表的最后一个元素。 例如,如果标准输入为
3 -1 1 14
1 6 16
输出为:
10
37
使得在内部
的for循环中不会解析14和16for _,val := range qq
有人可以帮我看看吗?