gpt4 book ai didi

java - Scanner.nextFloat 的奇怪行为

转载 作者:行者123 更新时间:2023-11-30 06:22:41 28 4
gpt4 key购买 nike

<分区>

如果我执行下面的代码:

import java.util.Scanner;

public class ScannerTest {

public static void main(String[] args) {

Scanner s = null;
StringBuilder builder = new StringBuilder(64);
String line = "1.1 2.2 3.3";
float fsum = 0.0f;

s = new Scanner(line).useDelimiter(" ");

while (s.hasNextFloat()){
float f = s.nextFloat();
fsum += f;
builder.append(f).append(" ");
}
System.out.println("Floats found: " + builder);
System.out.println("Sum: " + fsum);
s.close();
}
}

我的输出是:

Floats found: 
Sum: 0.0

但是如果我在 "1,1 2,2 3,3" 行中用点替换逗号,那么它会识别 float :

Floats found: 1.1 2.2 3.3 
Sum: 6.6000004

我想这是因为我的 SO 是西类牙语,我们使用逗号而不是带十进制数字的点。我想到了使用 Locale,但是没有 Locale.SPANISH。

此外,当我运行它时,它的行为正好相反:

public class StringToFloatTest {

public static void main(String[] args) {
String st = "1,1";
float f = Float.parseFloat(st);
System.out.println(f);
}
}

此代码会导致 NumberFormatException,但如果我使用 String st = "1.1",它会起作用。

有人可以解释为什么会这样吗?我怎样才能让扫描仪识别带点的 float ?

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com