我正在使用Android Studio为Android创建一个应用程序。我有一段代码块,用于收集一些字符串,将它们转换成双精度浮点数,将其放入方程式中,然后将答案放入只有两位小数的TextView中。
然而,当运行这段代码时,应用程序会崩溃,并且Android Studio会显示以下信息-
double weightDouble = Double.parseDouble(weightTextField.getText().toString());
double dehydrationDouble = Double.parseDouble(dehydrationTextField.getText().toString());
double lossesDouble = Double.parseDouble(lossesTextField.getText().toString());
double factorDouble = Double.parseDouble(factorTextField.getText().toString());
double fluidStepOne = (((Math.sqrt(Math.sqrt((weightDouble * weightDouble * weightDouble))))) * 70) * factorDouble;
double fluidStepTwo = fluidStepOne + (weightDouble * dehydrationDouble * 10);
double fluid24Hours = fluidStepTwo + lossesDouble;
double fluidHourInt = fluid24Hours / 24;
fluidResultLabel.setText(String.format(Locale.US, "%.2f", Double.toString(fluid24Hours)));
fluidPerHourResultLabel.setText(String.format(Locale.US, "%.2f", Double.toString(fluidHourInt)));
然而,当运行这段代码时,应用程序会崩溃,并且Android Studio会显示以下信息-
java.util.IllegalFormatConversionException: %f can't format java.lang.String arguments
at java.util.Formatter.badArgumentType(Formatter.java:1489)
at java.util.Formatter.transformFromFloat(Formatter.java:2038)
at java.util.Formatter.transform(Formatter.java:1465)
at java.util.Formatter.doFormat(Formatter.java:1081)
at java.util.Formatter.format(Formatter.java:1042)
at java.util.Formatter.format(Formatter.java:1011)
at java.lang.String.format(String.java:1554)
at com.georgeberdovskiy.fluidtherapy.MainActivity$1.onClick(MainActivity.java:82)
at android.view.View.performClick(View.java:5204)
at android.view.View$PerformClick.run(View.java:21153)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:148) at android.app.ActivityThread.main(ActivityThread.java:5444)
at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:746)
我的问题是-
- 我该如何解决这个问题?(如何将double正确格式化为两位小数的字符串)
- 还有其他什么可以改变,使我的代码更短且更不容易出错吗?
谢谢!- 乔治
附言- 这个问题不是重复的,因为与我的情况不同的是,先前相同问题的答案并未奏效。
String.format("%.2f", fluid24Hours)
。 - Andreas