2016-10-24 13 views
-7

乱数を生成して画面に表示するプログラムを作成しました。ユーザはスコアポイントに2つ以上の数字の合計を入力しなければならない。以下に示すコードではすべて明らかになっています。私の問題は、ゲームを開始するボタンがプレスであるとき、私のアプリがクラッシュする/前にこの問題はなかったが、プログラムが完全に完了していないので、それをさらに開発しなければならないということだ。今回の開発では、アプリケーションがクラッシュするという問題が発生しました。私はこれがloadG2aとloadG2bのランダムなint変数と関係があり、おそらくそれらが(numbers.getText())としてparseIntに統合されているか、またはそれらを一緒に 'numbers' TextViewで一緒に設定していると考えています。これはまったくそうではないかもしれません。どちらの方法でも、私はこのソリューションを解決しようとしましたが、解決策を見つけることができませんでした。コードは次のとおりです。このプログラムで私のアプリがクラッシュする原因は何ですか? - Androidスタジオ

final Button loseStarter2; 

     loseStarter2 = (Button) findViewById(R.id.Starter2); 
     loseStarter2.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       loseStarter2.setVisibility(View.GONE); 
       infoG2.setVisibility(View.GONE); 

       final Random generateG2 = new Random(); 
       final int loadG2a = generateG2.nextInt(89)+10; 
       final int loadG2b = generateG2.nextInt(89)+10; 
       final int loadG2c = 0; 
       final int loadG2d = 0; 
       final TextView numbers = (TextView) findViewById(R.id.numbers); 
       numbers.setText(loadG2a+loadG2b); 
       final EditText input2 = (EditText) findViewById(R.id.input2); 
       if (true) { 
        input2.setOnKeyListener(new View.OnKeyListener() { 
         @Override 
         public boolean onKey(View v, int keyCode, KeyEvent event) { 
          if (event.getAction() == KeyEvent.ACTION_DOWN) { 
           switch (keyCode) { 
            case KeyEvent.KEYCODE_ENTER: 
             Editable answer2 = input2.getText(); 
             int finalAnswer2 = Integer.parseInt(String.valueOf(answer2)); 
             int finalLoadG2 = Integer.parseInt(String.valueOf(numbers.getText())); 
             input2.getText().clear(); 

             if (finalAnswer2 == finalLoadG2) { 
              score++; 
             } 


             if (score>=0 && score<=3){ 
              int loadG2a = generateG2.nextInt(89)+10; 
              int loadG2b = generateG2.nextInt(89)+10; 
              int loadG2c = 0; 
              int loadG2d = 0; 
              numbers.setText(loadG2a+loadG2b); 

             } 

             if (score>=4 && score<=6){ 
              int loadG2a = generateG2.nextInt(899)+100; 
              int loadG2b = generateG2.nextInt(899)+100; 
              int loadG2c = 0; 
              int loadG2d = 0; 
              numbers.setText(loadG2a+loadG2b); 
             } 

             if (score>=7 && score<=9){ 
              int loadG2a = generateG2.nextInt(89)+10; 
              int loadG2b = generateG2.nextInt(89)+10; 
              int loadG2c = generateG2.nextInt(89)+10; 
              int loadG2d = 0; 
              numbers.setText(loadG2a+loadG2b+loadG2c); 
             } 

             if (score>=10 && score<=12){ 
              int loadG2a = generateG2.nextInt(899)+100; 
              int loadG2b = generateG2.nextInt(899)+100; 
              int loadG2c = generateG2.nextInt(899)+100; 
              int loadG2d = 0; 
              numbers.setText(loadG2a+loadG2b+loadG2c); 
             } 

             if (score>=13 && score<=15){ 
              int loadG2a = generateG2.nextInt(89)+10; 
              int loadG2b = generateG2.nextInt(89)+10; 
              int loadG2c = generateG2.nextInt(89)+10; 
              int loadG2d = generateG2.nextInt(89)+10; 
              numbers.setText(loadG2a+loadG2b+loadG2c+loadG2d); 
             } 

             if (score>=16 && score<=18){ 
              int loadG2a = generateG2.nextInt(899)+100; 
              int loadG2b = generateG2.nextInt(899)+100; 
              int loadG2c = generateG2.nextInt(899)+100; 
              int loadG2d = generateG2.nextInt(899)+100; 
              numbers.setText(loadG2a+loadG2b+loadG2c+loadG2d); 
             } 

             if (score>=19 && score<=20){ 
              int loadG2a = generateG2.nextInt(8999)+1000; 
              int loadG2b = generateG2.nextInt(8999)+1000; 
              int loadG2c = generateG2.nextInt(8999)+1000; 
              int loadG2d = 0; 
              numbers.setText(loadG2a+loadG2b+loadG2c); 
             } 

             if (score>=21 && score<=22){ 
              int loadG2a = generateG2.nextInt(8999)+1000; 
              int loadG2b = generateG2.nextInt(8999)+1000; 
              int loadG2c = generateG2.nextInt(8999)+1000; 
              int loadG2d = generateG2.nextInt(8999)+1000; 
              numbers.setText(loadG2a+loadG2b+loadG2c+loadG2d); 
             } 

             if (score>=23){ 
              int loadG2a = generateG2.nextInt(89999)+10000; 
              int loadG2b = generateG2.nextInt(89999)+10000; 
              int loadG2c = generateG2.nextInt(89999)+10000; 
              int loadG2d = generateG2.nextInt(89999)+10000; 
              numbers.setText(loadG2a+loadG2b+loadG2c+loadG2d); 
             } 


           } 
          } 

          return false; 
         } 
        }); 
       } 

私はこの問題を解決し、意図した方法でプログラムを実行していただけると幸いです。お気軽に必要なコードを置き換えてください。事前に多くの感謝。

+5

クラッシュの場合は、logcatをアップロードしてください。問題をより早く検出するのに役立ちます。 –

+0

コンソールで何が例外になるのか教えていただけますか? – xFighter

+0

また、** int loadG2a **の重複した識別子があるようです。** – xFighter

答えて

1
// here is int's (all other lines with int's must be also corrected) 
numbers.setText(loadG2a+loadG2b+loadG2c+loadG2d); 

// but must be String =) 
numbers.setText(loadG2a+loadG2b+loadG2c+loadG2d+""); 
+0

ありがとうございました。 – User44

関連する問題