2014-11-08 70 views
0

我有以下代碼。每當嘗試在我的應用程序崩潰時使用帶小數的數字。 我知道我的最終結果有問題,但最新的錯誤?Android java數學概率

b1.setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      String f = et1.getText().toString(); 
      int i = Integer.parseInt(f); 
      String s = et2.getText().toString(); 
      int j = Integer.parseInt(s); 
      String w = et4.getText().toString(); 
      int q = Integer.parseInt(s); 
      int price_gold = 10; 

      int fpa = 10; 
      int fpol = 10; 
      int isot = 10; 
      int sint_ker = 10; 
      Integer result1 = (i * price_gold) + (j * 1000) + (q * isot); 
      result = result1/340; 

      String res = result.toString(); 
      et3.setText(res); 
     } 
    } 
+0

你試圖解析一個小數並將其分配給一個int。 – Kon 2014-11-08 20:18:18

+1

後logcat輸出,因爲「_my應用程序崩潰_」沒有多大意義。 – csmckelvey 2014-11-08 20:19:19

+0

我必須轉換爲將其作爲小數傳遞嗎? – teok1979 2014-11-08 20:21:51

回答

0
,如果你想擁有整數輸出爲你的答案

東西,把所有的值除了RESULT1雙打,更容易 檢查如下:

b1.setOnClickListener(new OnClickListener() { 

    @Override 

    public void onClick(View v) { 

     String f = et1.getText().toString(); 

     double i = Double.parseDouble(f); 

     String s = et2.getText().toString(); 

     double j = Double.parseDouble(s); 

     String w = et4.getText().toString(); 

     double q = Double.parseDouble(s); 

     double price_gold = 10; 


     double fpa = 10; 

     double fpol = 10; 

     double isot = 10; 

     double sint_ker = 10; 

     Integer result1 = ((int)i * price_gold) + ((int)j * 1000) + ((int)q * isot); 

     result = result1/340; 

     String res = String.valueOf(result); 

     et3.setText(res); 
    } 

此代碼應然後給你的整數v你正在尋找的線索,簡單:)

+0

接受答案,如果這適用於你,如果不告訴我我在這裏的錯誤 – 2014-11-08 20:42:14

+0

這就是它的感謝。剛剛保留十進制結果,只是改變了\t \t \t \t double result1 =(i * price_gold)+(j * 1000)+(q * isot); – teok1979 2014-11-08 20:45:18

+0

不錯的一個,快樂編碼:) – 2014-11-08 21:08:32

0

您應該使用Float.parseFloat但要小心空的文本,如下所示

String f = et1.getText().toString(); 
if (!TextUtils.isEmpty(f)) { 
    Float i = Float.parseFloat(f); 
}