2017-07-04 1 views
0

私はアンドロイドスタジオで電卓アプリを作っていますが、私は=演算子をクリックしているときに常に結果をゼロにしています。親切にエラーを解決するのを手伝ってください。コードは以下の通りである:btnSub、btnMul、btnDivide、btnPercentage/Android Calculatorアプリケーションの出力としてゼロが表示されるのはなぜですか?

btnSub.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      /*...*/ 
     } 
    }); 
    btnMul.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      /*...*/ 
     } 
    }); 

    btnDivide.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      /*...*/ 
     } 
    }); 
    btnPercentage.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      /*...*/ 
     } 
    }); 

    btnEquals.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      switch (operator){ 
       case ADD : result = result + num; 
       case SUBTRACT : result = result - num; 
       case MULIPLY : result = result * num; 
       case DIVIDE : result = result/num; 
       case PERCENTAGE : result = result/100; 
      } 
      try { 
       etDisplay.setText(String.valueOf(result)); 
      } 
      catch (ArithmeticException e){ 
       etDisplay.setText(""); 
      } 
      finally { 
       num = 0; 
       result = 0; 
      } 
     } 
    }); 



} 

}についても同様

public class MainActivity extends AppCompatActivity { 

Button btn1, btn2, btn3, btn4, btn5, btn6, btn7, btn8, btn9, btn0, 
     btnAdd, btnSub, btnMul, btnDivide, btnEquals, btnPercentage, 
     btnClear, btnErase, btnPoint; 
EditText etDisplay; 

int num = 0, result = 0; 
int operator; 
public static final int ADD = 0; 
public static final int SUBTRACT = 1; 
public static final int MULIPLY = 2; 
public static final int DIVIDE = 3; 
public static final int PERCENTAGE = 4; 

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

    etDisplay = (EditText) findViewById(R.id.etDisplay); 
    btn0 = (Button) findViewById(R.id.btn0); 
    btn1 = (Button) findViewById(R.id.btn1); 
    btn2 = (Button) findViewById(R.id.btn2); 
    btn3 = (Button) findViewById(R.id.btn3); 
    btn4 = (Button) findViewById(R.id.btn4); 
    btn5 = (Button) findViewById(R.id.btn5); 
    btn6 = (Button) findViewById(R.id.btn6); 
    btn7 = (Button) findViewById(R.id.btn7); 
    btn8 = (Button) findViewById(R.id.btn8); 
    btn9 = (Button) findViewById(R.id.btn9); 
    btnAdd = (Button) findViewById(R.id.btnAdd); 
    btnSub = (Button) findViewById(R.id.btnSub); 
    btnMul = (Button) findViewById(R.id.btnMul); 
    btnDivide = (Button) findViewById(R.id.btnDivide); 
    btnEquals = (Button) findViewById(R.id.btnEquals); 
    btnPercentage = (Button) findViewById(R.id.btnPercentage); 
    btnClear = (Button) findViewById(R.id.btnClear); 

    btnClear.setOnClickListener(new View.OnClickListener() { 

    /****btnClear is used to clear the contents of EditText****/ 

     @Override 
     public void onClick(View v) { 
      etDisplay.setText(""); 
      num = 0; 
      result = 0; 
     } 
    }); 

    btn0.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      num = num * 10; 
      etDisplay.setText(""); 
      etDisplay.setText(String.valueOf(num)); 
     } 
    }); 

    btn1.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      num = (num * 10) + 1; 
      etDisplay.setText(""); 
      etDisplay.setText(String.valueOf(num)); 
     } 
    }); 
    btn2.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      num = (num * 10) + 2; 
      etDisplay.setText(""); 
      etDisplay.setText(String.valueOf(num)); 
     } 
    }); 
    btn3.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      num = (num * 10) + 3; 
      etDisplay.setText(""); 
      etDisplay.setText(String.valueOf(num)); 
     } 
    }); 
他のボタンについても同様

//

btn4.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      /*...*/ 
     } 
    }); 
    btn5.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      /*...*/ 
     } 
    }); 
    btn6.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      /*...*/ 
     } 
    }); 
    btn7.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      /*...*/ 
     } 
    }); 
    btn8.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      /*...*/ 
     } 
    }); 
    btn9.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      /*...*/ 
     } 
    }); 

    btnAdd.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      operator = ADD; 
      result = num; 
      num = 0; 
     } 
    }); 

/

答えて

0

あなたはswitchbreakを追加する必要がありそうでない場合は、すべての場合には、

case ADD : result = result + num;  break; 
case SUBTRACT : result = result - num; break; 
case MULIPLY : result = result * num; break; 
case DIVIDE : result = result/num; break; 
case PERCENTAGE : result = result/100; 

を実行されますあなたは/ 100あなたが1未満に価値を与えているとinteger divisionはあなたに0を与える小さな数字でしようとしているように、残りの部分を切り捨てるようです値の

+0

ありがとう...:)...それは今うまく働いています... :) –

関連する問題