2012-02-27 3 views
-5

自分のアプリでデバッグしていたアプリケーションと、ログに記録されているすべてのエラーを54行目で参照しています。 Int。このアプリの基本的な考え方は、ユーザーが変換したいペニーの数を入力し、四半期ごとに残りのペニーに分割するペニーコンバータです。この時点で、私はイベントを正しくキャッチしているのかどうか分からず、匿名の内部クラスを使用してクラス内で実装するだけで前後しました。Android Appが54行目(Integer.parseInt)でクラッシュしていて、完全にわからない理由

public class PennyConverterActivity extends Activity 
{ 

    EditText et; 
    TextView tv; 

    int cents; 
    int remaining; 
    int quarters; 
    int dimes; 
    int nickels; 
    int pennies; 
    String result; 

    @Override 

    public void onCreate(Bundle b) 
    { 
     super.onCreate(b); 
     setContentView(R.layout.main); 

     et = (EditText) findViewById(R.id.penny); 

     et.setText(result); 

     et.setOnKeyListener(new View.OnKeyListener() 
     { 

      @Override 
      public boolean onKey(View v, int keyCode, KeyEvent event) 
      { 
       if((event.getAction() == KeyEvent.ACTION_DOWN) && (keyCode == KeyEvent.KEYCODE_ENTER)) 
       { 
        result = et.getText().toString(); 
        return (true); 
       } 

       return (true); 
      } 
     }); 


     cents = Integer.parseInt(result); //LogCat error refers to this line 

     tv = (TextView) findViewById(R.id.quarters); 

     quarters = cents/25; 
     tv.setText(R.string.quarters); 
     remaining = cents % 25; 

     tv = (TextView) findViewById(R.id.dimes); 

     dimes = remaining/10; 
     tv.setText(R.string.dimes); 
     remaining = remaining % 10; 

     tv = (TextView) findViewById(R.id.nickels); 

     nickels = remaining/5; 
     tv.setText(R.string.nickles); 

     tv = (TextView) findViewById(R.id.pennies); 

     pennies = remaining % 5; 
     tv.setText(R.string.pennies); 

    } 

} 

と私のLogcatエラー

02-26 15:26:30.602: E/AndroidRuntime(25020): FATAL EXCEPTION: main 
02-26 15:26:30.602: E/AndroidRuntime(25020): java.lang.RuntimeException: Unable to start activity ComponentInfo{CS211D.HW03.PennyConverter/CS211D.HW03.PennyConverter.PennyConverterActivity}: java.lang.NumberFormatException: unable to parse 'null' as integer 
02-26 15:26:30.602: E/AndroidRuntime(25020): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647) 
02-26 15:26:30.602: E/AndroidRuntime(25020): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663) 
02-26 15:26:30.602: E/AndroidRuntime(25020): at android.app.ActivityThread.access$1500(ActivityThread.java:117) 
02-26 15:26:30.602: E/AndroidRuntime(25020): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931) 
02-26 15:26:30.602: E/AndroidRuntime(25020): at android.os.Handler.dispatchMessage(Handler.java:99) 
02-26 15:26:30.602: E/AndroidRuntime(25020): at android.os.Looper.loop(Looper.java:130) 
02-26 15:26:30.602: E/AndroidRuntime(25020): at android.app.ActivityThread.main(ActivityThread.java:3683) 
02-26 15:26:30.602: E/AndroidRuntime(25020): at java.lang.reflect.Method.invokeNative(Native Method) 
02-26 15:26:30.602: E/AndroidRuntime(25020): at java.lang.reflect.Method.invoke(Method.java:507) 
02-26 15:26:30.602: E/AndroidRuntime(25020): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
02-26 15:26:30.602: E/AndroidRuntime(25020): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
02-26 15:26:30.602: E/AndroidRuntime(25020): at dalvik.system.NativeStart.main(Native Method) 
02-26 15:26:30.602: E/AndroidRuntime(25020): Caused by: java.lang.NumberFormatException: unable to parse 'null' as integer 
02-26 15:26:30.602: E/AndroidRuntime(25020): at java.lang.Integer.parseInt(Integer.java:356) 
02-26 15:26:30.602: E/AndroidRuntime(25020): at java.lang.Integer.parseInt(Integer.java:332) 
02-26 15:26:30.602: E/AndroidRuntime(25020): at CS211D.HW03.PennyConverter.PennyConverterActivity.onCreate(PennyConverterActivity.java:52) 
02-26 15:26:30.602: E/AndroidRuntime(25020): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
02-26 15:26:30.602: E/AndroidRuntime(25020): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611) 
02-26 15:26:30.602: E/AndroidRuntime(25020): ... 11 more 
+5

これは基本的なJavaの質問です。あなたが使用している方法と期待することを理解し、何を渡しているかを確認し、それが機能することを確認してください。 – JoxTraex

答えて

1

Javaは整数として「ヌル」に解析することができないことを明確にログ状態:

は、ここでのJavaアプリケーションのためのコードです。

2

resultを初期化せず、Integer.parseInt(result)を呼び出すと、nullを解析できないという問題があります。これは、例外から明らかであるあなたが得る:

によって引き起こさ:java.lang.NumberFormatException:あなたはnullを解析していると述べた上から男のような

0

整数として「NULL」解析することができません、してみてくださいあなたのメソッドがあなたに結果を与えない場合には、前もって変数を初期化してください。おそらくこの結果はあなたの望むものではなく、コードはクラッシュしません。

result = 0; 

これはどちらでも動作しません。result = ""

関連する問題