2014-11-08 41 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); 
}