2015-09-13 28 views
-1

除以零它不是工作!如何修复在android

我用不同的方法来解决的情况下,但没有奏效

任何人谁可以帮我吗?

.............................................. ................................

  case '/': 

        pp = Double.parseDouble(text.getText().toString()); 


        if (sss == '/') { 
         if (Double.parseDouble(text.getText().toString()) == 0.0 ||Integer.parseInt(text.getText().toString()) == 0) { 

          text.setText(""); 
          text2.setText(""); 
          Toast.makeText(getBaseContext(), "Cannot divide by zero", Toast.LENGTH_SHORT).show(); 

         } else if (pp != 0 || pp != 0.0) { 

          vis = tt/pp; 

          temp = (int) vis; 
          if (vis == temp) { 

           text.setText(Integer.toString(temp)); 
          } else { 

           text.setText(Double.toString(vis)); 
          } 

          vis = 0; 
          ash = 0; 
          break; 

         } 
        } 
+2

使用try catch块 – Tauqir

+0

只是一个提示:使用**有意义的**变量名称! –

+0

作为一个问题,'temp =(int)vis;如果(vis == temp){} ...'比较完全匹配的float和int是脆弱的。你应该检查它们是否足够接近。请参阅http://stackoverflow.com/questions/1161199/is-relational-comparison-between-int-and-float-directly-possible-in-c – headuck

回答

1

将浮点值除以零不是错误,结果变得无限大。检查除法后的结果:

case '/': 

    pp = Double.parseDouble(text.getText().toString()); 


    if (sss == '/') { 

    vis = tt/pp; 

    if (Double.isInfinite(vis)) { 
     text.setText(""); 
     text2.setText(""); 
     Toast.makeText(getBaseContext(), "Cannot divide by zero", Toast.LENGTH_SHORT).show(); 
    } else { 

     temp = (int) vis; 
     if (vis == temp) { 
     text.setText(Integer.toString(temp)); 
     } else { 
     text.setText(Double.toString(vis)); 
     } 

     vis = 0; 
     ash = 0; 
     break; 

    } 
    } 
+0

谢谢♥但.isInfinity is'nt true - 您应该键入.isInfinite ;)祝你好运 – Bigeye

+0

@obj:我更正了以上代码以供将来访问者使用。 :) – Guffa

0

不要让你的代码如此复杂。只使用双变量作为你需要回答某些precision.Also师有与双类型变量除法运算的问题,因为他们不扔算术exception.Eg:

0/0 - 产生ArithmeticException
1.0/0 - 生成输出NaN(无限)

它接缝“pp”是双重类型。 所以写一些这样的事:

double tt=Double.parseDouble(textView1.getText().toString().trim()); 
double pp=Double.parseDouble(textView2.getText().toString().trim()); 

if(pp!=0){ 
    x=tt/pp; 
    System.out.println(" res :"+x); 
}else{ 
    //you logic if pp is 0 
} 

避免在计算,如果分母为零通过使用简单的检查(分母== 0),或者保留它,这样,当分母为零它显示的结果为NaN(无穷大)。