Go:使用strconv.ParseFloat将字符串转换为float返回0

时间:2016-04-03 15:35:31

标签: go

我有以下代码:

reader := bufio.NewReader(os.Stdin)
fmt.Print("room: width x length: ")

inStr, _ := reader.ReadString('\n')
result := strings.Split(inStr, "x")

string1, _ := strconv.ParseFloat(result[0], 64)
string2, _ := strconv.ParseFloat(result[1], 64)
fmt.Print(string2)

在最后一个print语句中,如果我打印string1它返回正确的值,但是如果我尝试打印string2它返回0,无论我输入到控制台的值是什么。

有谁知道为什么会这样? 谢谢!

1 个答案:

答案 0 :(得分:5)

替换

import java.util.*;

public class random2
{
public static void main ( String[] args )
{
    Random random;
    int i;
    int[] numbers;
    int numberOfNumbers=0;
    int upperRange=999;
    int lowerRange=0;
    int randomNumber=0;

    Scanner in = new Scanner(System.in);

    System.out.println("How many random numbers between 0-999?");
    numberOfNumbers=in.nextInt();
    numbers = new int [numberOfNumbers];


    random = new Random();

    for (i = 0; i < numberOfNumbers; i++){

    randomNumber = random.nextInt(upperRange-lowerRange) + lowerRange;
    numbers[i] = randomNumber;

    if (i==numberOfNumbers) 

    System.out.println(randomNumber);


    }      


  }

}

result := strings.Split(inStr, "x")

由于字符串包含result := strings.Split(strings.TrimSpace(inStr), "x") ,因此您的第二个数组元素也包含它。

另外,我真的建议在发布此类问题之前查看错误消息。您可以看到\n作为下一个代码的结果

strconv.ParseFloat: parsing "23\n": invalid syntax