2016-08-09 16 views
-1

こんにちは私はAndroidで電卓を作成するのに助けが必要です。私はちょっと作ったけど、2つの数字を追加する方法を探しています。 5 + 5は答えが10で、最初に5を追加して別の番号に置き換えるのではなく、それが追加されるよりも、ある特定の方法があります。どのように私はこの部分を変更:Androidで電卓を作成する際に助けが必要

public void onClick(View v) { 
     switch (v.getId()) { 
      case R.id.plus: 
       if (operand1 == 0) { 
        operand1 = Integer.parseInt(resultText.getText().toString()); 
        resultText.setText("0"); 
        operator = "+"; 
       } else { 
        operand2 = Integer.parseInt(resultText.getText().toString()); 
        answer = operand1 + operand2; 
        operand1 = answer; 
        resultText.setText("" + answer); 
        operand2 = 0; 
        answer = 0; 
        operator = ""; 
       } 
       break; 

追加し、別の番号で、それが追加されるよりも、それを交換するよりも、それはむしろ5よりも例えば5 + 5 = 10にします。ここで

は私の完全なコードです:

public class MainActivity extends AppCompatActivity implements View.OnClickListener { 


EditText resultText; 
Button one1, two1, three1; 
Button plus1; 
Button four1; 
Button five1; 
Button six1; 
Button minus1; 
Button seven1; 
Button eight1; 
Button nine1; 
Button multiply1; 
Button clear; 
Button zero1; 
Button square1; 
Button divide1, equals; 

int operand1, operand2, answer; 
String input, operator; 

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


    resultText = (EditText) findViewById(R.id.space); 
    resultText.setText("0"); 
    one1 = (Button) findViewById(R.id.one); 
    two1 = (Button) findViewById(R.id.two); 
    three1 = (Button) findViewById(R.id.three); 
    plus1 = (Button) findViewById(R.id.plus); 
    four1 = (Button) findViewById(R.id.four); 
    five1 = (Button) findViewById(R.id.five); 
    six1 = (Button) findViewById(R.id.six); 
    minus1 = (Button) findViewById(R.id.minus); 
    seven1 = (Button) findViewById(R.id.seven); 
    eight1 = (Button) findViewById(R.id.eight); 
    nine1 = (Button) findViewById(R.id.nine); 
    multiply1 = (Button) findViewById(R.id.multiply); 
    clear = (Button) findViewById(R.id.c); 
    zero1 = (Button) findViewById(R.id.zero); 
    square1 = (Button) findViewById(R.id.square); 
    divide1 = (Button) findViewById(R.id.divide); 
    equals = (Button) findViewById(R.id.equal); 

    one1.setOnClickListener(this); 
    two1.setOnClickListener(this); 
    three1.setOnClickListener(this); 
    plus1.setOnClickListener(this); 
    four1.setOnClickListener(this); 
    five1.setOnClickListener(this); 
    six1.setOnClickListener(this); 
    minus1.setOnClickListener(this); 
    seven1.setOnClickListener(this); 
    eight1.setOnClickListener(this); 
    nine1.setOnClickListener(this); 
    multiply1.setOnClickListener(this); 
    clear.setOnClickListener(this); 
    zero1.setOnClickListener(this); 
    square1.setOnClickListener(this); 
    divide1.setOnClickListener(this); 
    equals.setOnClickListener(this); 


} 

@Override 
public void onClick(View v) { 
    switch (v.getId()) { 
     case R.id.plus: 
      if (operand1 == 0) { 
       operand1 = Integer.parseInt(resultText.getText().toString()); 
       resultText.setText("0"); 
       operator = "+"; 
      } else { 
       operand2 = Integer.parseInt(resultText.getText().toString()); 
       answer = operand1 + operand2; 
       operand1 = answer; 
       resultText.setText("" + answer); 
       operand2 = 0; 
       answer = 0; 
       operator = ""; 
      } 
      break; 
     case R.id.minus: 
      if (operand1 == 0) { 
       operand1 = Integer.parseInt(resultText.getText().toString()); 
       resultText.setText("0"); 
       operator = "-"; 
      } else { 
       operand2 = Integer.parseInt(resultText.getText().toString()); 
       answer = operand1 - operand2; 
       operand1 = answer; 
       resultText.setText("" + answer); 
       operator = ""; 
       operand2 = 0; 
       answer = 0; 
      } 
      break; 
     case R.id.multiply: 
      if (operand1 == 0) { 
       operand1 = Integer.parseInt(resultText.getText().toString()); 
       operator = "*"; 
       resultText.setText("0"); 
      } else { 
       operand2 = Integer.parseInt(resultText.getText().toString()); 
       answer = operand1 * operand2; 
       operand1 = answer; 
       resultText.setText("" + answer); 
       operand2 = 0; 
       answer = 0; 
       operator = ""; 
      } 
      break; 
     case R.id.divide: 
      if (operand1 == 0) { 
       operand1 = Integer.parseInt(resultText.getText().toString()); 
       operator = "/"; 
       resultText.setText("0"); 
      } else { 
       operand2 = Integer.parseInt(resultText.getText().toString()); 
       answer = operand1/operand2; 
       operand1 = answer; 
       resultText.setText("" + answer); 
       operand2 = 0; 
       answer = 0; 
       operator = ""; 
      } 
      break; 
     case R.id.equal: 
      if (operand1 != 0) { 
       operand2 = Integer.parseInt(resultText.getText().toString()); 
       switch (operator) { 
        case "+": 
         answer = operand1 + operand2; 
         break; 
        case "-": 
         answer = operand1 - operand2; 
         break; 
        case "*": 
         answer = operand1 * operand2; 
         break; 
        case "/": 
         answer = operand1/operand2; 
         break; 
        default: 
         answer=0; 
         break; 
       } 
       operand1 = answer; 
       resultText.setText("" + answer); 
       operand2 = 0; 
       answer = 0; 
      } 
      break; 
     case R.id.square: 
      operand1 = Integer.parseInt(resultText.getText().toString()); 
      answer = operand1 * operand1; 
      resultText.setText("" + answer); 
      operand1 = answer; 
      break; 
     case R.id.c: 
      operand1 = 0; 
      operand2 = 0; 
      answer = 0; 
      resultText.setText("0"); 
      break; 

     default: 
      input = resultText.getText().toString(); 
      if (input.equals("0")) 
       input = v.getTag().toString(); 
      else 
       input += v.getTag().toString(); 
      resultText.setText(input); 
      break; 
    } 
} 

} 

uがすることができますように私は同じくらい助けることができるかどうかを確認してください。

+0

文字列「5 + 5」を入力する単一のテキストフィールドを編集したい場合は、計算結果が10を出力しますか?あなたが投稿したコードは、古典的な計算機をほぼシミュレートしているので、以前の結果に基づいて演算を連鎖させるためです。 – Ped7g

+0

オペランドを追加する前にオペランドを画面に表示することを意味しますか? – DCruz22

+0

はい私は2つの数字、例えば5 + 5 = 10を追加したいということを意味しています。数字を置き換えずに結果を得るよりも、それが10になると、私は5 + 5のような単純なものを私が10に変わるときよりも、私は5 + 5をテキストフィールドに表示したい – kenshin92

答えて

0

あなたが正確に尋ねていることを理解しているかどうかはわかりませんが、希望の文字列(「5 + 5」)を表示する前にオペランド1を設定しているようです。

次のようにコードを設定してみてください:

public void onClick(View v) { 
    switch (v.getId()) { 
     case R.id.plus: 
      if (operand1 == 0) { 
       operand1 = Integer.parseInt(resultText.getText().toString()); 
       resultText.setText("0"); 
       operator = "+"; 
      } else { 
       operand2 = Integer.parseInt(resultText.getText().toString()); 
       answer = operand1 + operand2; 
       resultText.setText(operand1 + operator + operand2); 
      } 
      break; 

続いて、次のトリガとなる=のために別々のボタンを作成します。

resultText.setText(answer); 
answer = 0; 
operand1 = 0; 
operand2 = 0; 
operator = ""; 

これはまだ不器用なようだが、より多くのを見ずにあなたのコードのそれはあなたが構築しているかどうかと一致するかどうか私は本当に言うことができません。基本的に、完全な文字列( "5 + 5")を表示し、次にEnterを押すと答えを表示し( "10")、他のすべての変数をクリーンアップします。回答が別のボタンによってトリガされないようにするには、遅延を設定する可能性があります。

関連する問題