仅检查输入中的小数

时间:2014-02-16 13:39:58

标签: android

LogCat:

02-16 21:33:30.235: E/AndroidRuntime(28464): FATAL EXCEPTION: main
02-16 21:33:30.235: E/AndroidRuntime(28464): java.lang.NumberFormatException: Invalid double: ""
02-16 21:33:30.235: E/AndroidRuntime(28464):    at java.lang.StringToReal.invalidReal(StringToReal.java:63)
02-16 21:33:30.235: E/AndroidRuntime(28464):    at java.lang.StringToReal.parseDouble(StringToReal.java:248)
02-16 21:33:30.235: E/AndroidRuntime(28464):    at java.lang.Double.parseDouble(Double.java:295)
02-16 21:33:30.235: E/AndroidRuntime(28464):    at lmf.test8.MainActivity.onClick(MainActivity.java:35)
02-16 21:33:30.235: E/AndroidRuntime(28464):    at android.view.View.performClick(View.java:4212)
02-16 21:33:30.235: E/AndroidRuntime(28464):    at android.view.View$PerformClick.run(View.java:17476)

XML:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity" >

    <TextView
        android:id="@+id/text_display"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

    <Button
        android:id="@+id/button_compute"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/button_compute" />

    <EditText 
        android:id="@+id/edit_input"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:inputType="numberDecimal" />

</LinearLayout>

MainActivity

public class MainActivity extends Activity implements OnClickListener {

    TextView text_display;
    EditText input;
    Button compute;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        text_display = (TextView) findViewById(R.id.text_display);
        input = (EditText) findViewById(R.id.edit_input);
        compute = (Button) findViewById(R.id.button_compute);
        compute.setOnClickListener(this);
    }

    @Override
    public void onClick(View arg0) {

        String get_input = input.getText().toString();

        if (!get_input.equals("") || !get_input.equals(".")) {

            Double double_input = Double.parseDouble(get_input);

            if (double_input > 5) {
                text_display.setText("greater than 5");
            }
            else {
                text_display.setText("less than 5");
            }
        }
        else {
            text_display.setText("");
        }
    }

}

每当我将edittext留空或输入小数时,我的应用程序崩溃了。但是当我删除if语句中的|| !get_input.equals(".")时,即使我将edittext留空,我也没有收到错误。但是当我输入一个小数时,我收到一个错误。如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

if (!get_input.equals("") && !get_input.equals(".")) {

更改逻辑以使用&amp;&amp ;.使用||,当其中一个条件为真时,您仍然会进入if语句,然后尝试从空格或句点中解析一个double,这会给出数字格式异常。

您希望在尝试解析输入之前确保输入不等于空 AND 不等于句号。