私は、文字列のそれぞれを削除し、画面がなくなっても表示されない場合でも結果を表示するために、いくつかのコードを使用しようとします。例1234
私はすべてをクリアします。私はそれぞれを削除したい。 より多く挿入する場合例:1234556
画面の幅が不足しています。それは12345
が画面の幅に従うことを示します。なぜ私はそれぞれを削除することはできませんし、画面の幅を使い果たしたときの結果を参照してください?
public class MainActivity extends Activity implements View.OnClickListener {
Button one, two, three, four, five, six, seven, eight, nine, zero, add,
sub, mul, div, equal, decimal, cancel, sin, cos, tan, open_bracket, close_bracket,del,log,fac,sqrt,e,pi,mod;
EditText disp;
boolean stateError;
boolean lastNumeric;
boolean lastDot;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
one = (Button) findViewById(R.id.one);
two = (Button) findViewById(R.id.two);
three = (Button) findViewById(R.id.three);
four = (Button) findViewById(R.id.four);
five = (Button) findViewById(R.id.five);
six = (Button) findViewById(R.id.six);
seven = (Button) findViewById(R.id.seven);
eight = (Button) findViewById(R.id.eight);
nine = (Button) findViewById(R.id.nine);
zero = (Button) findViewById(R.id.zero);
add = (Button) findViewById(R.id.add);
sub = (Button) findViewById(R.id.sub);
mul = (Button) findViewById(R.id.mul);
div = (Button) findViewById(R.id.div);
equal = (Button) findViewById(R.id.equal);
decimal = (Button) findViewById(R.id.decimal);
sin = (Button) findViewById(R.id.sin);
cos = (Button) findViewById(R.id.cos);
tan = (Button) findViewById(R.id.tan);
open_bracket = (Button) findViewById(R.id.open_bracket);
close_bracket = (Button)findViewById(R.id.close_bracket);
disp = (EditText) findViewById(R.id.txtScreen);
cancel = (Button) findViewById(R.id.cancel);
del = (Button) findViewById(R.id.del);
try {
one.setOnClickListener(this);
two.setOnClickListener(this);
three.setOnClickListener(this);
four.setOnClickListener(this);
five.setOnClickListener(this);
six.setOnClickListener(this);
seven.setOnClickListener(this);
eight.setOnClickListener(this);
nine.setOnClickListener(this);
zero.setOnClickListener(this);
add.setOnClickListener(this);
sub.setOnClickListener(this);
mul.setOnClickListener(this);
div.setOnClickListener(this);
equal.setOnClickListener(this);
decimal.setOnClickListener(this);
cancel.setOnClickListener(this);
del.setOnClickListener(this);
sin.setOnClickListener(this);
cos.setOnClickListener(this);
tan.setOnClickListener(this);
open_bracket.setOnClickListener(this);
close_bracket.setOnClickListener(this);
log.setOnClickListener(this);
sqrt.setOnClickListener(this);
e.setOnClickListener(this);
pi.setOnClickListener(this);
fac.setOnClickListener(this);
mod.setOnClickListener(this);
} catch (Exception e) {
}
}
@SuppressLint("SetTextI18n")
@Override
public void onClick(View v) {
Editable str = disp.getText();
switch (v.getId()) {
case R.id.zero:
str = str.append(zero.getText());
disp.setText(str);
break;
case R.id.one:
str = str.append(one.getText());
disp.setText(str);
break;
case R.id.two:
str = str.append(two.getText());
disp.setText(str);
break;
case R.id.three:
str = str.append(three.getText());
disp.setText(str);
break;
case R.id.four:
str = str.append(four.getText());
disp.setText(str);
break;
case R.id.five:
str = str.append(five.getText());
disp.setText(str);
break;
case R.id.six:
str = str.append(six.getText());
disp.setText(str);
break;
case R.id.seven:
str = str.append(seven.getText());
disp.setText(str);
break;
case R.id.eight:
str = str.append(eight.getText());
disp.setText(str);
break;
case R.id.nine:
str = str.append(nine.getText());
disp.setText(str);
break;
case R.id.add:
str = str.append(add.getText());
disp.setText(str);
break;
case R.id.sub:
str = str.append(sub.getText());
disp.setText(str);
break;
case R.id.mul:
str = str.append(mul.getText());
disp.setText(str);
break;
case R.id.div:
str = str.append(div.getText());
disp.setText(str);
break;
case R.id.decimal:
str = str.append(decimal.getText());
disp.setText(str);
break;
case R.id.sin:
str = str.append(sin.getText());
disp.setText(str);
break;
case R.id.cos:
str = str.append(cos.getText());
disp.setText(str);
break;
case R.id.tan:
str = str.append(tan.getText());
disp.setText(str);
break;
case R.id.buttonSqr:
str = str.append(String.valueOf(Math.E));
disp.setText(str);
case R.id.open_bracket:
str = str.append(open_bracket.getText());
disp.setText(str);
break;
case R.id.close_bracket:
str = str.append(close_bracket.getText());
disp.setText(str);
break;
case R.id.del:
if (disp.getText().toString().length() > 1) {
String screen_new = disp.getText().toString().substring(0, disp.getText().toString().length() - 1);
disp.setText(screen_new);
} else {
disp.setText("");
}
lastNumeric = false;
stateError = false;
lastDot = false;
case R.id.cancel:
disp.setText("");
break;
case R.id.equal:
String val;
val = disp.getText().toString();
Expression result ;
val = val.replaceAll("x", "*").replaceAll("÷", "/").replaceAll("mod","%").replaceAll("e","Math.E")
.replaceAll("pi",String.valueOf(Math.PI));
try {
result = new ExpressionBuilder(val).build();
disp.setText(Double.toString(result.evaluate()));
/* size_num = result.calculate(); */
}catch (ArithmeticException ex) {
// Display an error message
disp.setText("Error");
stateError = true;
lastNumeric = false;
}
break;
}
}
}
私は、あなたの条件文で 'lastNumeric'と関係があると思います。しかし、投稿する際には「動作しません」と定義する必要があります。そのようなものは絶対に何もせず、クラッシュし、望ましくない出力などを与えます。 – codeMagic
sin(30)を実行すると画面に「エラー」メッセージが表示されますか? –
あなたは私に例を挙げることができますか?私はたくさんの検索を試みますが解決策はありません。 – Nico