0

好吧,我正在调试我的第一个 android 应用程序,但我的程序有问题……我的计算器只能求和、减法、乘法和除法……最后一个操作是我的问题……我使用 TextEdit 插入任何值我的手机,但是当我将 5 除以 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());
            }
        }
    });

输入“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());

            }
        }
    });
4

1 回答 1

0

第一:每当您的应用程序“崩溃”(由于异常而退出)并且您想在 Stack 中寻求帮助时,请在发布之前执行以下操作:

首先,在调试模式下运行它并从调试窗口查看堆栈跟踪。如果您没有看到它,请在 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 + "");

您没有发布您进行除法的部分,所以我不确定为什么您的部分不起作用。但是,我建议您不要只发布相关部分,而应该自己继续插入。在程序的不同点设置一些断点并对其进行调试,然后单步执行代码,检查不同变量的值以查看问题所在。学习调试过程对你来说比回答这个问题要有用得多!祝你好运!

于 2013-06-19T00:24:56.090 回答