在从字符串解析为整数时遇到问题,有时字符串被解析为0,尽管不是0。
示例:的
我首先要做的是将字符串解析为三个不同的整数。我的代码如下:
package main
import (
"bufio"
"fmt"
"os"
"strconv"
"strings"
)
func main() {
reader := bufio.NewReader(os.Stdin)
line, _ := reader.ReadString('\n')
splitted := strings.Split(line, " ")
N, _ := strconv.ParseInt(splitted[0], 0, 64) //Works as intended
P, _ := strconv.ParseInt(splitted[1], 0, 64) //Works as intended
Q, _ := strconv.ParseInt(splitted[2], 0, 64) //Does not work as intended
fmt.Print(N, P, Q) //For testing the parsing
}
如果输入字符串:“5 25 125”,输出会以某种方式变为: 5 25 0。
这就是问题所在,有时解析会将整数解析为字符串的内容。但有时它会将整数解析为零。
为什么会这样?
答案 0 :(得分:3)
ReadString读取 直到输入中第一次出现delim,返回一个字符串 包含直至并包括分隔符的数据。
因此splitted[2]
为125\n
,您应检查strconv.ParseInt(splitted[2], 0, 64)
中的错误,而不是nil
,以便返回的值为0.