用逗号作为小数分隔符解析double

-1 java number-formatting

我从用户那里获得输入并逐行读取.然后我使用split方法来标记输入.像这样:

Scanner input=new Scanner(System.in);
String input1=input.nextLine();
String[] tokens=input1.split(" ");
method1(Double.parseDouble(tokens[0]),Double.parseDouble(tokens[1])); 
Run Code Online (Sandbox Code Playgroud)

这是method1:

 public static void method1 (double a, double b) {
    System.out.println(a);
    System.out.println(b);
 }
Run Code Online (Sandbox Code Playgroud)

当我声明3.5和5.3输出时;

   3.5
   5.3
Run Code Online (Sandbox Code Playgroud)

这里没有问题,但如果我声明3,5和5,3我的代码在下面给出错误;

Exception in thread "main" java.lang.NumberFormatException: For input string: "3,5"
    at sun.misc.FloatingDecimal.readJavaFormatString(Unknown Source)
    at java.lang.Double.parseDouble(Unknown Source)
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个问题?

Mar*_*oun 6

使用NumberFormat你可以做这样的事情:

NumberFormat f = NumberFormat.getInstance(Locale.FRANCE);
double myNumber = f.parse("3,5").doubleValue();
Run Code Online (Sandbox Code Playgroud)

现在您可以传递myNumber给接受double值的方法.

使用时Locale.FRANCE,告诉Java你double,而不是写数字..