2013-09-22 77 views
0

我在學習Java,當我嘗試輸入雙浮點數時遇到了一些問題。使用nextDouble掃描double

像這樣。

import java.util.Scanner; 

class Program { 
    public static void main (String[] args) { 
      Scanner inp = new Scanner(System.in); 
      double number = inp.nextDouble(); 
      System.out.println(number); 
    } 
} 

如果我進入我的輸出將是1000.0。但是,如果我進入1000.0,我得到這個錯誤:

Exception in thread "main" java.util.InputMismatchException 
    at java.util.Scanner.throwFor(Scanner.java:909) 
    at java.util.Scanner.next(Scanner.java:1530) 
    at java.util.Scanner.nextDouble(Scanner.java:2456) 
    at test.Test.main(Test.java:6) 
Java Result: 1 

我怎麼能解決這個問題?

+0

如果輸入'1000,0',該怎麼辦? – BackSlash

+2

1000.0應該可以。 – Maroun

+3

@MarounMaroun我認爲這取決於你所在的國家。我在意大利,十進制數字是用逗號而不是點寫的,所以如果我輸入'1000.0',我得到一個'InputMismatchException',如果我輸入'1000,0',一切都很順利。 – BackSlash

回答

1

這可能是由於1000.0和1000,0之間的區域差別...所以你可以試試這個:

Scanner inp = new Scanner(System.in); 
inp.useLocale(Locale.ENGLISH); 

我希望這有助於。

+1

掃描儀沒有這種方法,它是'useLocale' – BackSlash

+0

但是有一個問題。 找不到符號: 符號:變量區域設置 位置:class程序 ---- – Alvadorn

+0

@Alvadorn您必須導入'java.util.Locale' – BackSlash