2015-02-05 30 views
-2

我試着用read-double函數讀取double值,但是讀取其他值,我給它輸入15.00,它的讀數爲825568816.請幫助我弄清楚它的正確性。readDouble(); java編程

DataInputStream din=new DataInputStream(System.in); 
    double d=din.readDouble(); 
    System.out,println(d); 
+1

我建議這個場景的[Scanner](http://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html)類。 –

+0

謝謝馬克,但DataInputStream怎麼了? – Shirisss

+0

請看下面的Jon Skeet的回答。 'DataInputStream'旨在與'DataOutputStream'一起使用。他對其他實現的建議更易於使用,並會給您更好的結果。 –

回答

7

基本上,如果你想閱讀文字不使用DataInputStreamDataInputStream是指由DataOutputStream或類似的東西寫的數據流。請閱讀readDouble的文檔,以確切瞭解它在做什麼。你

選項:

  • 使用Scanner及其nextDouble()方法:我的堆棧溢出問題的經驗是,Scanner是坦率地正確使用
  • 創建BufferedReader包裝的InputStreamReader痛苦,然後請撥打readLine()以獲取一行文字,然後撥打Double.parseDouble()將其解析爲double
  • 一種混合方法:使用Scanner,但只能調用nextLine() - 基本上,這是一種簡單的方法來讀取System.in中的文本行。

此外,你可能要考慮使用BigDecimal - 值「15.00」聽起來像它可能是一個財務價值(如價格) - 和那些應存放在BigDecimal作爲可以代表確切小數值。