2016-09-09 15 views
0

私は0-9の作業の基本的な数字を持っていると私はアプリのクラッシュ私の追加機能を実行しようとするとき、私は持っているコードは、しかし、これまでAndroidの基本的な計算は、乗算、減算、追加

public class MainActivity extends AppCompatActivity { 


    Button button0 , button1 , button2 , button3 , button4 , button5 , button6 , 
      button7 , button8 , button9 , buttonAdd , buttonSub , buttonDivision, 
      buttonMul , button10 , buttonC , buttonEqual ; 

    TextView txtView ; 

    float num1 = 0; 
    float num2 = 0; 
    float sum = 0; 


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

      button0 = (Button) findViewById(R.id.button0); 
      button1 = (Button) findViewById(R.id.button1); 
      button2 = (Button) findViewById(R.id.button2); 
      button3 = (Button) findViewById(R.id.button3); 
      button4 = (Button) findViewById(R.id.button4); 
      button5 = (Button) findViewById(R.id.button5); 
      button6 = (Button) findViewById(R.id.button6); 
      button7 = (Button) findViewById(R.id.button7); 
      button8 = (Button) findViewById(R.id.button8); 
      button9 = (Button) findViewById(R.id.button9); 
      button10 = (Button) findViewById(R.id.button10); 
      buttonAdd = (Button) findViewById(R.id.buttonadd); 
      buttonSub = (Button) findViewById(R.id.buttonsub); 
      buttonMul = (Button) findViewById(R.id.buttonmul); 
      buttonDivision = (Button) findViewById(R.id.buttondiv); 
      buttonC = (Button) findViewById(R.id.buttonC); 
      buttonEqual = (Button) findViewById(R.id.buttoneql); 
      txtView = (TextView) findViewById(R.id.txtView); 


      button1.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        txt.setText(txt.getText()+"1"); 
       } 
      }); 

      button2.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        txtView.setText(txtView.getText()+"2"); 
       } 
      }); 

      button3.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        txtView.setText(txtView.getText()+"3"); 
       } 
      }); 

      button4.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        txtView.setText(txtView.getText()+"4"); 
       } 
      }); 

      button5.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        txtView.setText(txtView.getText()+"5"); 
       } 
      }); 

      button6.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        txtView.setText(txtView.getText()+"6"); 
       } 
      }); 

      button7.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        txtView.setText(txtView.getText()+"7"); 
       } 
      }); 

      button8.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        txtView.setText(txtView.getText()+"8"); 
       } 
      }); 

      button9.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        txtView.setText(txtView.getText()+"9"); 
       } 
      }); 

で割ます。シンプルなもののようですが、私が見た他の例はもっと複雑です。私の追加コードは...

buttonAdd.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        num1 = Float.parseFloat(txtView.getText().toString()); 
        num2 = Float.parseFloat(txtView.getText().toString()); 
        sum = num1 + num2; 
       } 
      }); 

そして等価ボタンが押されると、私のコードは次のようになります。これは私のために働いていない部分です。

buttonEqual.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        txtView.setText(Float.toString(sum)); 
       } 
      }); 

これにより、アプリがクラッシュします。どんな助け?ありがとう

+0

私はnullポインタ – kgandroid

+0

を投稿ログを参照してください、あなたはNPE – Ryan

+0

を取得していて、ログの猫 – kgandroid

答えて

0

私はあなたのbuttonAddの機能は間違いだと思います。

num1 = Float.parseFloat(txtView.getText().toString()); 
num2 = Float.parseFloat(txtView.getText().toString()); 

あなたのコードを実行しながら、num1num2は同じです。

+0

はい、あなたが正しい取得されている行を特定します。しかし、それは 'NullPointerException'とは関係ありません。 – Nikhil

+0

hmm。それは意味がある私は私が店2を傾けないように1つの番号を入力しました。私は等号ボタンをクリックして2番目の番号を取得する必要があります – Ryan

0

私はあなたのエラーを理解していません。 しかし問題はありません。ただbtnAddとbtnEqualを変更する必要があります これを試すことができますか?

buttonAdd.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       num1 = Float.parseFloat(txtView.getText().toString()); 
       txtView.setText(""); 
      } 
     }); 


buttonEqual.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       num2 = Float.parseFloat(txtView.getText().toString()); 
       sum = num1 + num2; 
       txtView.setText(Float.toString(sum)); 
      } 
     }); 
+0

申し訳ありません。 btnaddリスナtxtView.settext( "");にthis.codeを追加する必要があります。 – Kayra

+0

num1の下に追加すると、txtView.setText( "");? – Ryan

+0

はい。あなたはこれを試しましたか?それは動作する必要があります – Kayra