java - 检查editText是否为空

标签 java android

我有一个 editText(称为输入),用户可以在其中输入一个值,然后选择一个单选按钮将该值转换为不同的度量单位。我正在尝试设置一个 if 语句,以便在未选择单选按钮且 edittext 为空时显示一条文本消息,但它一直使程序崩溃!

public void startCalculation() {
    RadioGroup rg = (RadioGroup)findViewById(R.id.radioGroup);
    int selectedConversion = rg.getCheckedRadioButtonId();
    double input = Double.parseDouble(((EditText) findViewById(R.id.currentSpeed)).getText().toString());
    double speed = 0;
    String measurement = "";
    System.out.println("The Value of Input is: " + input);

    //If its 0 then no unit has been selected
    if(selectedConversion != -1 && input > 0) { 

知道是什么导致程序崩溃吗?

编辑:这是日志:

10-27 13:39:02.357 2058-2058/com.example.dan14.windproject E/AndroidRuntime: FATAL EXCEPTION: main
10-27 13:39:02.357 2058-2058/com.example.dan14.windproject E/AndroidRuntime: Process: com.example.dan14.windproject, PID: 2058
10-27 13:39:02.357 2058-2058/com.example.dan14.windproject E/AndroidRuntime: java.lang.NumberFormatException: Invalid double: ""
10-27 13:39:02.357 2058-2058/com.example.dan14.windproject E/AndroidRuntime:     at java.lang.StringToReal.invalidReal(StringToReal.java:63)
10-27 13:39:02.357 2058-2058/com.example.dan14.windproject E/AndroidRuntime:     at java.lang.StringToReal.parseDouble(StringToReal.java:267)
10-27 13:39:02.357 2058-2058/com.example.dan14.windproject E/AndroidRuntime:     at java.lang.Double.parseDouble(Double.java:301)
10-27 13:39:02.357 2058-2058/com.example.dan14.windproject E/AndroidRuntime:     at com.example.dan14.windproject.MainActivity.startCalculation(MainActivity.java:88)
10-27 13:39:02.357 2058-2058/com.example.dan14.windproject E/AndroidRuntime:     at com.example.dan14.windproject.MainActivity$2.onClick(MainActivity.java:49)
10-27 13:39:02.357 2058-2058/com.example.dan14.windproject E/AndroidRuntime:     at android.view.View.performClick(View.java:5198)
10-27 13:39:02.357 2058-2058/com.example.dan14.windproject E/AndroidRuntime:     at android.view.View$PerformClick.run(View.java:21147)
10-27 13:39:02.357 2058-2058/com.example.dan14.windproject E/AndroidRuntime:     at android.os.Handler.handleCallback(Handler.java:739)
10-27 13:39:02.357 2058-2058/com.example.dan14.windproject E/AndroidRuntime:     at android.os.Handler.dispatchMessage(Handler.java:95)
10-27 13:39:02.357 2058-2058/com.example.dan14.windproject E/AndroidRuntime:     at android.os.Looper.loop(Looper.java:148)
10-27 13:39:02.357 2058-2058/com.example.dan14.windproject E/AndroidRuntime:     at android.app.ActivityThread.main(ActivityThread.java:5417)
10-27 13:39:02.357 2058-2058/com.example.dan14.windproject E/AndroidRuntime:     at java.lang.reflect.Method.invoke(Native Method)
10-27 13:39:02.357 2058-2058/com.example.dan14.windproject E/AndroidRuntime:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
10-27 13:39:02.357 2058-2058/com.example.dan14.windproject E/AndroidRuntime:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

最佳答案

问题是这行代码:

double input = Double.parseDouble(((EditText) findViewById(R.id.currentSpeed)).getText().toString());

您传递了一个空字符串,这会导致与您的情况类似的 NumberFormatException。

使用该代码使其更具可读性:

public void startCalculation() {
    RadioGroup rg = (RadioGroup)findViewById(R.id.radioGroup);
    int selectedConversion = rg.getCheckedRadioButtonId();
    String lInputString = ((EditText) findViewById(R.id.currentSpeed)).getText().toString();
    double input = 0;
    if (!lInputString.trim().equals("")){
      input = Double.parseDouble(lInputString);
    }
    double speed = 0;
    String measurement = "";
    System.out.println("The Value of Input is: " + input);

    //If its 0 then no unit has been selected
    if(selectedConversion != -1 && input > 0) { 

关于java - 检查editText是否为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33369509/

相关文章:

java - 如何比较两个不同数据库的结果集?

android - 与项目 'com.google.code.gson:gson' 中的依赖项 ':app' 冲突。应用程序 (2.7) 和测试应用程序 (2.8.0) 的已解决版本不同

java - GooglePlay 服务 AdMob

android - Android动态添加EditText、Spinner、Radiobutton

java - Spring MVC 缺少矩阵变量

java - 调用init方法失败;嵌套异常是 java.lang.NoClassDefFoundError

java - apache 上 php exec 的权限和 jar 文件位置

java - Android Build Strings 让我抓狂

android - 在android中制作可滚动的虚拟键盘

javascript 和 loadUrl 错误