2013-06-18 73 views
0

那么,即时调试我的第一个Android应用程序和即时通讯与我的程序有问题...我的计算器只加法,减法,乘法和除...和最后一个操作是我的问题...我使用TextEdit在我的手机上插入任何值,但当我除以3时,例如,答案是一个浮点数,应用程序将崩溃。它只会工作,如果我使用5.0和3.0,计算器浮点数转换

是否有无论如何转换整数浮动和总是回答浮动?

到目前为止,这是我已经得到了每一个操作...

try { 
       firstNum = new BigDecimal(firstInput.getText().toString()); 
       firstFloat = firstNum.floatValue(); 
      } catch (NumberFormatException e) { 
       firstNum = null; 
      } 

      try { 
       secondNum = new BigDecimal(secondInput.getText().toString()); 
       secondFloat = secondNum.floatValue(); 
      } catch (NumberFormatException e) { 
       secondNum = null; 
      } 

的 “firstFloat = firstNum.floatValue();”和“secondFloat = firstNum.floatValue();”我已经看到论坛上的转换......一切都很好,直到一个办法......

if (firstNum == null || secondNum == null) { 
       Toast.makeText(getApplicationContext(), "Insira Valores!", 
         Toast.LENGTH_SHORT).show(); 
      } else { 
       result.setText(firstNum.add(secondNum).toString()); 
      } 
     } 
    }); 

进入“其他”,这样就不会总结我的输入,花车,除非我用.0之后。 .. 有无论如何去做所有使用“firstFloat”和“secondFloat”的操作?

司:

div.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 

      try { 
       firstNum = new BigDecimal(firstInput.getText().toString()); 
      } catch (NumberFormatException e) { 
       firstNum = null; 
      } 

      try { 
       secondNum = new BigDecimal(secondInput.getText().toString()); 
      } catch (NumberFormatException e) { 
       secondNum = null; 
      } 

      if (firstNum == null || secondNum == null) { 
       Toast.makeText(getApplicationContext(), "Insira Valores!", 
         Toast.LENGTH_SHORT).show(); 
      } else { 
       BigDecimal div = firstNum.divide(secondNum).setScale(2, 
         BigDecimal.ROUND_HALF_EVEN); 
       result.setText(div.toString()); 

      } 
     } 
    }); 
+1

你可以发布stacktrace吗? –

+0

'secondFloat = firstNum.floatValue();'那真的是你想要的吗?你不想做'secondFloat = secondNum.floatValue();'而不是? –

+0

大声笑...它来自复制/粘贴...它是'secondFloat = secondNum.floatValue();' –

回答

0

第一:每当你的应用程序“崩溃”(退出因除外),并要在协议栈寻求帮助,请执行下列操作,然后再发布:

首先,以调试模式运行它,并从Debug窗口查看堆栈跟踪。如果你没有看到它,在Eclipse中转到Window \ Show View \ Debug。在许多情况下,它会包括像:

Thread [<1> main] (Suspended (exception RuntimeException)) 
.... 
YourClass.yourMethod() line: 27 
... 

在这种情况下,你可以看到有一个在第27行一个RuntimeException - 这将帮助你找出问题。如果您仍然需要帮助并且需要发布问题,请包括堆栈跟踪,并指出哪一行是第27行。

如果堆栈跟踪未在代码中显示失败(换句话说,if堆栈跟踪中的所有东西都是Android类,它们都不是你的类),使用断点来确定程序失败的位置。查看Eclipse的帮助以获取有关设置断点的更多信息。您也可以使用它们来找出程序逻辑中的错误,因为当您处于调试模式并且您遇到了中断点时,您可以将鼠标停留在变量上并查看它具有的值。

对你的问题。这对我来说很好:

BigDecimal firstNum = null, secondNum = null; 
float firstFloat = -1, secondFloat = -1; 

try { 
    firstNum = new BigDecimal("4"); 
    firstFloat = firstNum.floatValue(); 
    secondNum = new BigDecimal("3"); 
    secondFloat = secondNum.floatValue(); 
} catch (NumberFormatException e) { 
    e.printStackTrace(); 
} 
float a = firstFloat/secondFloat; 
tempview.setText(a + ""); 

你没有发布你的部门,所以我不知道你为什么不工作。但是,我建议您不要仅仅发布相关部分,而应该自己堵住它。在程序中的不同位置设置一些断点并对其进行调试,然后遍历代码,在您查看问题出现的位置时检查不同变量的值。学习调试的过程对你来说比对这个问题的答案更有用!祝你好运!

+0

你是对的,我记得,以及...我张贴它;) –

+0

工作就像一个魅力!谢谢!! Thansk帮助我完成我的第一个Android应用程序的bug:D –

+0

没问题,我真的很喜欢与Android开发混乱,我希望你也能做到! – DevOfZot