[英]Parsing double with comma as decimal separator
我從用戶那里獲取輸入並逐行閱讀它,然后使用split方法將輸入標記化。 像這樣:
Scanner input=new Scanner(System.in);
String input1=input.nextLine();
String[] tokens=input1.split(" ");
method1(Double.parseDouble(tokens[0]),Double.parseDouble(tokens[1]));
這是method1
:
public static void method1 (double a, double b) {
System.out.println(a);
System.out.println(b);
}
當我聲明3.5和5.3輸出時;
3.5
5.3
這里沒有問題,但是如果我在下面聲明錯誤,則聲明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)
我該如何解決這個問題?
使用NumberFormat
可以執行以下操作:
NumberFormat f = NumberFormat.getInstance(Locale.FRANCE);
double myNumber = f.parse("3,5").doubleValue();
現在,您可以將myNumber
傳遞給接受double
myNumber
值的方法。
當使用Locale.FRANCE
,你告訴Java的,你寫的double
數字用,
而不是.
。
您可以這樣使用DecimalFormat
:
DecimanFormat df = new DecimalFormat("#.#", DecimalFormatSymbols.getInstance());
Double returnValue = Double.valueOf(df.format(input1));
因此DecimalFormatSymbols.getInstance()
將獲取默認語言環境及其正確的符號。
閱讀有關DecimalFormat
更多信息。
我猜是:您通過掃描儀輸入的是
3.5 5.3
你已經申請了
String[] tokens=input1.split(" ");
因此,如果您輸入的內容為,則將您的字符串分為子字符串,即3.5和5.3
3.5,5.3
這將是成功的並且它將編譯而不會出現錯誤。
在你的情況下
input 3,5 5,3
它只需要在拆分方法中放入“,”,例如:
String[] tokens=input1.split(",");
它將與...一起工作
3
5 5
3
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.