0

我正在尝试将计时器的值相乘,或者只是尝试将值设为字符串。

每次我尝试将其设为字符串并用于toast.show()查看它时,我的应用程序都会崩溃。我可以EditText显示我的价值,但我似乎无法让我的计时器工作。两个字符串timefin让它崩溃。这是代码:

String hour = String.valueOf(mText.getText());
String time = String.valueOf(mChronometer.getBase() - stoppedMilliseconds);
int h = java.lang.Integer.parseInt(hour) / 60;
int t = java.lang.Integer.parseInt(time) * 1000 / 60;
int mm = h * t;
mon.setText(Integer.toString(mm));
String fin = "" + mm;


Toast.makeText(PoopActivity.this,
        "Money made: " + fin, Toast.LENGTH_LONG).show();
4

1 回答 1

0

有几个缺陷掩盖了此代码的功能。

  • time总是消极的。交换减法参数。
  • 从小时转换hour为分钟时,请乘以而不是除以 60。
  • 从毫秒转换time为分钟时,除而不是乘以 1000。
  • 计算mm产生以分钟平方为单位的数量。这几乎没有任何意义。
  • 使用getApplicationContext而不是PoopActivity. 某些应用程序PoopActivity可能正在运行。
  • 没有异常处理。据我们所知,mon可能为 null 并setText抛出异常。将您的代码包装在 try - finally 块中:

String fin = "";

try
{
    // most of your code goes here

    mon.setText(Integer.toString(mm));
    String fin += mm;
}
catch (Exception e)
{
    // display the exception here if so inclined
}
finally
{
    Toast.makeText(PoopActivity.this,
    "Money made: " + fin, Toast.LENGTH_LONG).show();
}

但是,fin是一个包含负数的字符串就好了。

于 2012-07-17T16:36:53.270 回答