2014-02-16 1 views
0
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 :

나는 비어 있거나 I 입력 진수를 글고을 떠날 때마다
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(""); 
     } 
    } 

} 

, 내 응용 프로그램이 충돌합니다. 그러나 if 문에서 || !get_input.equals(".")을 제거하면 edittext를 비워 두어도 오류가 발생하지 않습니다. 그러나 소수점을 입력 할 때 오류가 발생합니다. 이 문제를 해결하는 방법?

답변

2
if (!get_input.equals("") && !get_input.equals(".")) { 
는 & &를 사용하도록 로직을 변경

. ||를 사용하면 조건 중 하나가 참일 때 if 문에 계속 입력 한 다음 공백 또는 숫자 형식 예외를 제공하는 기간에서 double을 파싱하려고합니다.

구문 분석을 시도하기 전에 입력 한 내용이 빈 과 같지 않은지 확인하고 싶습니다.