2017-02-19 57 views
1

我對Java很陌生,我正在製作一個簡單的計算器。問題是當我的輸入數字是例如「3.1」時,它給出了一個異常錯誤,但是當寫入「3,1」時它工作得很好。當我用逗號或點分隔小數時掃描加倍

但是,我的朋友有一個稍微高級的計算器(帶有字符串解析),當我運行他的代碼時,情況會發生相反的變化:3,1給出異常錯誤,3.1完美工作。

我很期待知道是什麼導致了這些不同的行爲。

我剛纔提出這個簡單的加法,同樣的情況,我將修改,並把他的計算器代碼在幾分鐘內

import java.util.Scanner; 

public class Tutorial_7 { 
    public static void main(String args[]){ 
     Scanner scan = new Scanner(System.in); 
     double num1, num2; 

     System.out.println("Introduza os dois números"); 

     System.out.println("1º: "); 
     num1 = scan.nextDouble(); 
     System.out.println("2º: "); 
     num2 = scan.nextDouble(); 

     System.out.println((num1 + num2)); 
     scan.close(); 
    } 

} 

最後編輯:他確實使用Double.parseDouble()。明白了,差異確實在於它本地化的地方。應該找到它,但從來沒有聽說過這個概念。

謝謝

+2

不知道的代碼是什麼樣子的這些實現的,我們無法回答。抱歉。 –

+1

閱讀Scanner.nextDouble()的文檔:它說明它的功能。閱讀Double.parseDouble()(你的朋友可能使用)的文檔:它說明了它的作用。一個是本地化的,另一個不是,並且它全部記錄在javadoc中。 –

回答

1

由於您使用的區別Local爲一個可以用點.,另一個用逗號掃描它,修復它,你應該解決一個你的掃描儀是這樣的:

Scanner scan = new Scanner(System.in).useLocale(Locale.US); 

例如:

  • 如果您正在使用Local.US你應該用一個.6.6
  • 如果您正在使用Locale.FRENCH你應該來掃描你的雙用 掃描您的雙A ,6,6