2 回答
TA贡献1869条经验 获得超4个赞
摆脱扫描仪(您已经说过您更喜欢 ReadLine())并更改 nextInt() 函数以调用 nextLine(),如下所示:
func nextInt() int {
i, e := strconv.Atoi(nextLine())
if e != nil {
panic(e)
}
return i
}
(顺便说一句,对错误的用户输入感到恐慌并不是一个好主意,但我认为这只是一个测试,您不会对生产代码这样做:)
TA贡献1111条经验 获得超0个赞
你可以尝试不使用扫描仪,也许像这样 Readline 会为你获取数字,只需转换它
package main
import (
"bufio"
"fmt"
"io"
"os"
"strconv"
)
var rd = bufio.NewReaderSize(os.Stdin, 1000000)
func nextLine() string {
buf := make([]byte, 0, 1000000)
for {
line, isPrefix, err := rd.ReadLine()
if err == io.EOF {
break
} else if err != nil {
panic(err)
}
buf = append(buf, line...)
if !isPrefix {
break
}
}
return string(buf)
}
func main() {
var s string
var a int
s = nextLine()
fmt.Println(s)
s = nextLine()
a, e := strconv.Atoi(s)
if e != nil {
panic(e)
}
fmt.Println(a)
}
- 2 回答
- 0 关注
- 125 浏览
添加回答
举报