1.页面布局
做的时候刚开始讲View,没办法就用的线性布局,太蠢了。总体模式选择的是android:orientation=“vertical” 将其分为6部分。除第一部分外,其余部分又划分成线性布局,模式是android:orientation=“horizontal”
然后就按需要添加Button就可以,尽量做到见明知意。
2.JAVA文件
一定要写在前面的是:写完这个程序后就一直报错,都要气死了。在大佬的指点下,发现我真是太SB了,把 super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);
这两个如此重要的语句放到onCreate最后了,所以一开始声明初始化变量findViewById根本find不到啊!太蠢了~
Button buttonce = findViewById(R.id.buttonce);
Button buttonc = findViewById(R.id.buttonc);
Button button7 = findViewById(R.id.button7);
Button button8 = findViewById(R.id.button8);
Button button9 = findViewById(R.id.button9);
Button buttondiv = findViewById(R.id.buttondiv);
Button button4 = findViewById(R.id.button4);
Button button5 = findViewById(R.id.button5);
Button button6 = findViewById(R.id.button6);
Button buttontimes = findViewById(R.id.buttontimes);
Button button1 = findViewById(R.id.button1);
Button button2 = findViewById(R.id.button2);
Button button3 = findViewById(R.id.button3);
Button buttonminus = findViewById(R.id.buttonminus);
Button button0 = findViewById(R.id.button0);
Button buttonpoint = findViewById(R.id.buttonpoint);
Button buttonequal = findViewById(R.id.buttonequal);
Button buttonplus = findViewById(R.id.buttonplus);
textView = findViewById(R.id.textView);
buttonce.setOnClickListener(this);
buttonc.setOnClickListener(this);
button7.setOnClickListener(this);
button8.setOnClickListener(this);
button9.setOnClickListener(this);
buttondiv.setOnClickListener(this);
button4.setOnClickListener(this);
button5.setOnClickListener(this);
button6.setOnClickListener(this);
buttontimes.setOnClickListener(this);
button1.setOnClickListener(this);
button2.setOnClickListener(this);
button3.setOnClickListener(this);
buttonminus.setOnClickListener(this);
button0.setOnClickListener(this);
buttonpoint.setOnClickListener(this);
buttonequal.setOnClickListener(this);
buttonplus.setOnClickListener(this);
switch (v.getId()) {
case R.id.button0:
case R.id.button1:
case R.id.button2:
case R.id.button3:
case R.id.button4:
case R.id.button5:
case R.id.button6:
case R.id.button7:
case R.id.button8:
case R.id.button9:
case R.id.buttonpoint:
if (flag) {
flag = false;
str = "";
textView.setText("");
}
textView.setText(str + ((Button) v).getText());
break;
case R.id.buttonplus:
case R.id.buttonminus:
case R.id.buttontimes:
case R.id.buttondiv:
if (flag) {
flag = false;
str = "";
textView.setText("");
}
if (str.contains("+") || str.contains("-") || str.contains("*") || str.contains("/")) {
str = str.substring(0, str.indexOf(" "));
}
textView.setText(str + " " + ((Button) v).getText() + " ");
break;
case R.id.buttonc:
if (flag) {
flag = false;
str = "";
textView.setText("");
} else if (str != null && !str.equals("")) {
textView.setText(str.substring(0, str.length() - 1));
}
break;
case R.id.buttonce:
if (flag)
flag = false;
str = "";
textView.setText("");
break;
case R.id.buttonequal:
getResult();
break;
}
}
3.getResult()方法
private void getResult () {
String exp = textView.getText().toString();
if (exp == null || exp.equals(""))return;
if (!exp.contains(" ")) {
return;
}
if (flag) {
flag = false;
return;
}
flag = true;
String s1 = exp.substring(0, exp.indexOf(" "));
String op = exp.substring(exp.indexOf(" ") + 1, exp.indexOf(" ") + 2);
String s2 = exp.substring(exp.indexOf(" ") + 3);
double cnt = 0;
if (!s1.equals("") &&!s2.equals("")) {
double d1 = Double.parseDouble(s1);
double d2 = Double.parseDouble(s2);
if (op.equals("+")) {
cnt = d1 + d2;
}
if (op.equals("-")) {
cnt = d1 - d2;
}
if (op.equals("*")) {
cnt = d1 * d2;
}
if (op.equals("/")) {
if (d2 == 0) cnt = 0;
else cnt = d1 / d2;
}
if (!s1.contains(".") && !s2.equals(".") &&!op.equals("/")) {
int res = (int) cnt;
textView.setText(res + "");
}
else {
textView.setText(cnt + "");
}
} else if (!s1.equals("") && s2.equals("")) {//s1不空,s2空
double d1 = Double.parseDouble(s1);
if (op.equals("+")) {
cnt = d1;
}
if (op.equals("-")) {
cnt = d1;
}
if (op.equals("*")) {
cnt = 0;
}
if (op.equals("/")) {
cnt = 0;
}
if (!s1.contains(".")) {
int res = (int) cnt;
textView.setText(res + "");
} else {
textView.setText(cnt + "");
}
} else if (s1.equals("") && !s2.equals("")) {//s2不空,s1空
double d2 = Double.parseDouble(s2);
if (op.equals("+")) {
cnt = d2;
}
if (op.equals("-")) {
cnt = 0 - d2;
}
if (op.equals("*")) {
cnt = 0;
}
if (op.equals("/")) {
cnt = 0;
}
if (!s2.contains(".")) {
int res = (int) cnt;
textView.setText(res + "");
} else {
textView.setText(cnt + "");
}
} else {
textView.setText("");
}
}