golang标准输入
一直都是在leedcode上刷题,导致对golang标准输入输出不是很熟悉
目前的了解是,fmt包中的scan scanf scanln都会读到空格结束
所以要输入带空格的字符串就只能用bufio包
但是试了几种方法都是非阻塞式的,虽然在牛客oj上可以通过,但是没办法在本地ide上自己输入测试
请问大家是怎么解决这个问题的呢?#golang#
目前的了解是,fmt包中的scan scanf scanln都会读到空格结束
所以要输入带空格的字符串就只能用bufio包
但是试了几种方法都是非阻塞式的,虽然在牛客oj上可以通过,但是没办法在本地ide上自己输入测试
请问大家是怎么解决这个问题的呢?#golang#
全部评论
可以参考下牛客的IO练习,一般用bufio.NewScanner来获取整行输入
input := bufio.NewScanner(os.Stdin)
for input.Scan() {
data := input.Text()
}
m一下
uu找到工作了吗?
用bufio.NewReader 每次读一整行
别用fmt,那玩意慢的要死,我被坑惨了
请问这个读取输入错误的问题是在哪呀?
package main
import (
"bufio"
"fmt"
"os"
"strconv"
"strings"
)
func main() {
scanner := bufio.NewScanner(os.Stdin)
scanner.Scan()
str := scanner.Text()
strArray := strings.Split(str, " ")
n, _ := strconv.Atoi(strArray[0])
scanner.Scan()
str = scanner.Text()
strArray = strings.Split(str, " ")
nums := make([]int, n)
res := 0
ans := 0
for i := 0; i < n; i++{
nums[i], _ = strconv.Atoi(strArray[i])
res += nums[i]
if nums[i] == 0{
ans++
}
}
for scanner.Scan(){
str = scanner.Text()
strArray = strings.Split(str, " ")
min, _ := strconv.Atoi(strArray[0])
max, _ := strconv.Atoi(strArray[1])
fmt.Printf("%v %v\n", res + min * ans, res + max * ans)
}
}
程序异常退出, 请检查代码"是否有数组越界等异常"或者"是否有语法错误"
panic: runtime error: index out of range [1] with length 1
goroutine 1 [running]:
main.main()
/tmp/main.go:44 +0x34a
相关推荐
11-09 23:40
济南大学 Java 点赞 评论 收藏
分享
点赞 评论 收藏
分享