2013-09-05 183 views
0

我試圖創建一個通過採取從用戶輸入的計算十進制數的計算器。我試圖添加這兩個值。我的代碼如下:與Java輸入/輸出計算 - 小數

import java.io.*; 
public class calc{ 
    public static void main(String[] args)throws Exception{ 
     System.out.println("Input 1st no"); 
     InputStreamReader reader = new InputStreamReader(System.in); 
     BufferedReader p=new BufferedReader(reader); 
     String k = p.readLine(); 
     float a= (float) k; 
     System.out.println("Enter 2nd no"); 
     InputStreamReader read = new InputStreamReader(System.in); 
     BufferedReader l = new BufferedReader(read); 
     String z = l.readLine(); 
     float b = (float) z; 
     float res = (b+a); 
     System.out.println("Final result is: " +res); 
    } 
} 

那麼應該怎麼修復呢?我試過編譯沒有運氣。它給出錯誤「不兼容的類型」,我知道它是不兼容的,但我不認爲有任何其他方法來檢測十進制數。

+0

按照慣例,類應以大寫字母開頭;計算器。您還應該發佈編譯器輸出,以便我們更容易看到哪一行失敗。 – tbsalling

回答

2

你不能簡單地做float a= (float) k;String轉換爲float

你應該叫Float.parseFloat(k)代替。

注意,這個函數可以拋出NumberFormatException如果字符串不包含可分析的浮動。

+0

謝謝。它效果很好。 –

1

你有很遠。

這應做到:

float a = Float.valueOf(k); 

float b = Float.valueOf(z); 

如果我可以提供一些線索,首先,命名類Calc而不是calc :)

也許可以考慮使用double超過float(由於精度問題)。

而且使用更有實際意義(長)變量名(谷歌camel-case)。

玩得開心!

0

readLine()返回String的方法。您不能直接將String轉換爲float。 你可以做Float f = Float.valueOf(k)

0

你不能投類型是這樣的:

String z = l.readLine(); 
float b = (float) z; 

將字符串轉換爲Float使用

Float b = Float.parseFloat(z);