好吧,我正在调试我的第一个Android应用程序,我的程序有问题...我的计算器只有总和,减去,乘法和除法...而最后一个操作是我的问题...我使用TextEdit插入我手机上的任何值,但是当我将5除以3时,答案是一个浮动,应用程序将崩溃。它只有在我使用5.0和3.0时才有效,
无论如何将int转换为浮点数并始终回答浮点数?
到目前为止,这是我每次操作所得到的......
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());
}
}
});
输入“else”之后,这种方式它不会将我的输入作为浮点数求和,除非我使用.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());
}
}
});
答案 0 :(得分:0)
首先:每当您的应用程序“崩溃”(由于例外而退出)并且您想在Stack中寻求帮助时,请在发布之前执行以下操作:
首先,在Debug模式下运行它,然后从Debug窗口查看堆栈跟踪。如果您没有看到它,请在Eclipse中转到Window \ Show View \ Debug。在许多情况下,它将包括:
Thread [<1> main] (Suspended (exception RuntimeException))
....
YourClass.yourMethod() line: 27
...
在这种情况下,您可以看到第27行中存在RuntimeException - 这将帮助您确定问题。如果您仍需要帮助而需要发布问题,请包含堆栈跟踪,并指出哪一行是第27行。
如果堆栈跟踪未在代码中显示失败(换句话说,如果堆栈跟踪中的所有内容都是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 + "");
你没有发布你做师的部分,所以我不确定你为什么不工作。但是,我建议您不要仅仅发布相关部分,而应自行保管。在程序的不同点设置一些断点并对其进行调试,然后逐步执行代码,检查不同变量的值,以查看问题出现的位置。学习调试过程对你来说比这个问题的答案更有用!祝你好运!