计算器浮动转换

时间:2013-06-18 23:19:42

标签: java android

好吧,我正在调试我的第一个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());

            }
        }
    });

1 个答案:

答案 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 + "");

你没有发布你做师的部分,所以我不确定你为什么不工作。但是,我建议您不要仅仅发布相关部分,而应自行保管。在程序的不同点设置一些断点并对其进行调试,然后逐步执行代码,检查不同变量的值,以查看问题出现的位置。学习调试过程对你来说比这个问题的答案更有用!祝你好运!