実現したいこと
演算子を連続で入力したときに、計算処理が起こってしまうのを防ぎたい。
前提
参考動画
こちらの方の動画を参考に、Androidstudioで電卓を作っています。
現在更新中の動画であり、まだコード自体未完成なのですが、この不具合がどうしても気になります。
該当のソースコード
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
}
//数字ボタンの処理
private void buttonNumber(String s) { if (sb.length() < 8) { if (sb.toString().equals("0")) { sb.delete(0, sb.length()); } sb.append(s); tv_result.setText(sb); btncolorback(); } }
//+演算子クリック時の実行処理
private void Plus(View cal) { if (cal.getId() == R.id.bt_plus) { btncolorback(); if (calcphase == 0) { if (!tv_result.getText().toString().equals("")) { stateNumber(); statePlus(); } } else if (calcphase == 1) { if (!tv_result.getText().toString().equals("")) { statePlus(); caliculatePlus(); } } else if (calcphase == 2) { caliculateMinus(); statePlus(); } else if (calcphase == 3) { if (!tv_result.getText().toString().equals("")) { caliculateMulti(); statePlus(); } } else if (calcphase == 4) { if (!tv_result.getText().toString().equals("")) { caliculateDiv(); stateDiv(); } } } }
//-演算子クリック時の実行処理
private void Minus(View cal) { if (cal.getId() == R.id.bt_minus) { btncolorback(); if (calcphase == 0) { //初期処理 if (!tv_result.getText().toString().equals("")) { stateNumber(); stateMinus(); setOpertator=true; } } else if (calcphase == 1) { if (!tv_result.getText().toString().equals("")) { caliculatePlus(); stateMinus(); } } else if (calcphase == 2) { //マイナス処理 if (!tv_result.getText().toString().equals("")) { stateMinus(); if (setOpertator = false) { caliculateMinus(); } } } else if (calcphase == 3) { //内部処理としてxを実行 if (!tv_result.getText().toString().equals("")) { caliculateMulti(); stateMulti(); } } else if (calcphase == 4) { if (!tv_result.getText().toString().equals("")) { caliculateDiv(); stateMinus(); } } } }
//四則演算の計算処理
//足し算
private void caliculatePlus() { if (!tv_result.getText().toString().equals("")) { if (calcphase == 1) { calc1= Double.parseDouble(tv_result.getText().toString()); calc2 += calc1; calc1 = 0; sb.delete(0, sb.length()); tv_result.setText(String.valueOf(calc2)); } } }
//引き算
private void caliculateMinus() { if (!tv_result.getText().toString().equals("")) { if (calcphase == 2) { calc1=Double.parseDouble(tv_result.getText().toString()); calc2 -= calc1; calc1 = 0; sb.delete(0, sb.length()); tv_result.setText(String.valueOf(calc2)); } } }
//四則演算の状態処理
private void stateNumber() { if (!tv_result.getText().toString().equals("")) { calc2 = Double.parseDouble(tv_result.getText().toString()); calc1 = 0; sb.delete(0, sb.length()); tv_result.setText(String.valueOf(calc2)); } } private void statePlus() { calcphase = 1; bt_plus.setBackgroundColor(Color.rgb(200, 200, 200)); }
Java
試したこと
演算子を押す直前に、数字ボタンが押されているかどうかで条件式を書こうと思いましたがコードが思いつかず・・・
大変曖昧な質問で申し訳ないですが、どうかお力を貸していただけないでしょうか。
補足情報(FW/ツールのバージョンなど)
javaを学習して2週間ほどです。
0 コメント