今天我们要来讲剩下的方法
public void time(View view){
if (record == 5) {
record = 2;
}
think();
recordtime = 0;
record = 2;
number.setText(temp +"×");
warming++;
warm();
}
先分temp等不等於0和num2不等於0,前者的话temp就等於一,再让time等於temp,最後归零num,再判断num2等不等於0,是的话就temptime=time X num2,不是就temptime = time,这里我前面少了第一个判断,卡了很久
public void devide(View view){
if (record == 5) {
record = 3;
}
think();
recordtime = 0;
record = 3;
number.setText(temp +"÷");
warming++;
warm();
}
讲到除法就很忌讳0,所以前面要先片段是否数字为0,是就变成1,接着就tempdevide = num2 / devide和tempdevide = devide / num2差别,毕竟刚开始按了数字再按除键,数字不会变,但还是要纪录一下,我再打的时候也想了很久
public void warm(){
if (warming > 1){
new AlertDialog.Builder(MainActivity.this)
.setTitle("Warming")
.setMessage("运算符号输入两遍")
.setPositiveButton("OK",null)
.show();
number.setText("0");
num = 0;
num1 =0 ;
num2 = 0;
temp = 0;
record = 5;
recordplus = 1;
recordnegetive = 1;
recordtime = 1;
recorddevide = 1;
plus = 0;
negetive = 0;
time = 0;
devide = 0;
warming = 0;
}
}
这个只是再判断如果使用者按了两下运算符号就警告并归零,没有很难懂
public void enter(View view){
think();
number.setText(""+temp);
}
enter按了之後就会显示答案,蛮简单的方法
我在下面贴一下完整的程序码,就不会那麽乱了
TextView number;
double num;
double num1;
double num2 = 0;
double tempplus;
double tempnegetive;
double temptime;
double tempdevide;
double temp = 0;
double plus =0;
double negetive =0;
double time = 1;
double devide = 1;
int record = 5;
int recordplus = 1;
int recordnegetive =1;
int recordtime = 1;
int recorddevide =1;
int warming = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
number = findViewById(R.id.number);
}
public void count(){
num = (num2 * 10)+ num1;
num2 = num;
warming = 0;
}
public void one(View view){
num1 = 1;
count();
number.setText(num+"");
}
public void two(View view){
num1 = 2;
count();
number.setText(num+"");
}
public void three(View view){
num1 = 3;
count();
number.setText(num+"");
}
public void four(View view){
num1 = 4;
count();
number.setText(num+"");
}
public void five(View view){
num1 = 5;
count();
number.setText(num+"");
}
public void six(View view){
num1 = 6;
count();
number.setText(num+"");
}
public void seven(View view){
num1 = 7;
count();
number.setText(num+"");
}
public void eight(View view){
num1 = 8;
count();
number.setText(num+"");
}
public void nine(View view){
num1 = 9;
count();
number.setText(num+"");
}
public void zero(View view){
num1 = 0;
count();
number.setText(num+"");
}
public void think(){
if(record == 0){
plus = temp;
num = 0;
tempplus = plus + num2;
plus = tempplus;
num2 = 0;
temp = plus;
}else if(record == 1){
if (temp == 0) {
negetive = temp;
num=0;
tempnegetive = num2;
}else {
negetive = temp;
num = 0;
tempnegetive = negetive - num2;
}
negetive = tempnegetive;
num2 =0;
temp = negetive;
}else if(record == 2){
if(temp == 0 && num2!=0){
temp = 1;
}
time = temp;
num = 0;
if(num2!=0) {
temptime = time * num2;
}else {
temptime = time;
}
time = temptime;
num2 = 0;
temp = time;
}else if(record == 3){
if(temp == 0){
temp = 1;
devide = temp;
num = 0;
tempdevide = num2 / devide;
}else {
devide = temp;
num = 0;
tempdevide = devide / num2;
}
devide = tempdevide;
num2 = 0;
temp = devide;
}
}
public void warm(){
if (warming > 1){
new AlertDialog.Builder(MainActivity.this)
.setTitle("Warming")
.setMessage("运算符号输入两遍")
.setPositiveButton("OK",null)
.show();
number.setText("0");
num = 0;
num1 =0 ;
num2 = 0;
temp = 0;
record = 5;
recordplus = 1;
recordnegetive = 1;
recordtime = 1;
recorddevide = 1;
plus = 0;
negetive = 0;
time = 0;
devide = 0;
warming = 0;
}
}
public void plus(View view){
if (record == 5){
record = 0;
}
think();
recordplus = 0;
record = 0;
number.setText( temp+"+");
warming++;
warm();
}
public void negetive(View view){
if (record == 5){
record = 1;
}
think();
recordnegetive = 0;
record = 1;
number.setText( temp + "-");
warming++;
warm();
}
public void time(View view){
if (record == 5) {
record = 2;
}
think();
recordtime = 0;
record = 2;
number.setText(temp +"×");
warming++;
warm();
}
public void devide(View view){
if (record == 5) {
record = 3;
}
think();
recordtime = 0;
record = 3;
number.setText(temp +"÷");
warming++;
warm();
}
public void ac(View view){
number.setText("0");
num = 0;
num1 =0 ;
num2 = 0;
temp = 0;
record = 5;
recordplus = 1;
recordnegetive = 1;
recordtime = 1;
recorddevide = 1;
plus = 0;
negetive = 0;
time = 0;
devide = 0;
}
public void delete(View view){
if(num >= 10) {
num = (num - num1)/ 10;
num2 = num;
number.setText(num+"");
}else if(num > 0){
num = 0;
num2 = num;
number.setText(num+"");
}
}
public void enter(View view){
think();
number.setText(""+temp);
}
但毕竟我也是新手,很有可能有逻辑错误,因此造成一些奇怪的BUG,所以就请多多包涵罗!
<<: [Day29]懒惰的人是时间的奴隶-资料医生,补值高手
今日时间主要给学员与组员讨论专题,另外助教也分享参赛及制作专题的心得。 ...
前几天做了很多 AWS 服务使用 CDK 部署的介绍,今天我想来介绍一个满多人都有机会用到的 Blo...
何谓「排序(Sort)」? 排序是指一组资料中,将资料以「由大到小」或「由小到大」的方式重新排列。 ...
今天就来说说 expect() 与 expect {} 的差别吧 我们用一个例子来讲 describ...
前面两天的文章中我们谈到泛型(generics)的使用,以及如何透过 extends 来限制泛型可被...