我正在构建一个计算器,它使用两个textView作为输入,一个textView作为结果框。当我按下+, - ,x或/按钮时,程序将切换到textView2并继续输入数字。然后单击=按钮执行计算。
当我点击=按钮时程序忘记按下+, - ,x或/按钮,这样它就不会知道它应该如何计算。
有没有办法可以“记住”第一个按钮点击,以便我可以用它来确定要计算的内容?
Android代码更新,V2
package com.example.tristan.assn2;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
TextView operand1, operand2,result,tv;
int operation;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
operand1 = (TextView) findViewById(R.id.textView);
operand2 = (TextView) findViewById(R.id.textView2);
result= (TextView) findViewById(R.id.textView3);
tv=operand1;
}
public void sendMessage(View v) {
if (v.getId() == R.id.button18 || v.getId() == R.id.button15 || v.getId() == R.id.button17 || v.getId() == R.id.button21 || v.getId() == R.id.button18) {
tv=operand2;
}
if (v.getId() == R.id.button) {
tv.setText(tv.getText() + "1");
}
if (v.getId() == R.id.button2) {
tv.setText(tv.getText() + "2");
}
if (v.getId() == R.id.button3) {
tv.setText(tv.getText() + "3");
}
if (v.getId() == R.id.button4) {
tv.setText(tv.getText() + "4");
}
if (v.getId() == R.id.button5) {
tv.setText(tv.getText() + "5");
}
if (v.getId() == R.id.button6) {
tv.setText(tv.getText() + "6");
}
if (v.getId() == R.id.button7) {
tv.setText(tv.getText() + "7");
}
if (v.getId() == R.id.button8) {
tv.setText(tv.getText() + "8");
}
if (v.getId() == R.id.button9) {
tv.setText(tv.getText() + "9");
}
if (v.getId() == R.id.button10) {
tv.setText(tv.getText() + "0");
}
if (v.getId() == R.id.button11) {
tv.setText(tv.getText() + ".");
}
Button plus = (Button) findViewById(R.id.button17);
Button minus = (Button) findViewById(R.id.button15);
Button mult = (Button) findViewById(R.id.button18);
Button div = (Button) findViewById(R.id.button21);
//plus
if(v.getId()==R.id.button17){
operation = 1;
}
//minus
if(v.getId()==R.id.button15){
operation = 2;
}
//mult
if(v.getId()==R.id.button18){
operation = 3;
}
//div
if(v.getId()==R.id.button21){
operation = 4;
}
int op1, op2;
switch(operation){
case 1:
op1=Integer.parseInt(operand1.getText().toString());
op2=Integer.parseInt(operand2.getText().toString());
op2+=op1;
if(v.getId()==R.id.button23){
result.setText(op2+"");
tv=operand1;
}
break;
case 2:
op1=Integer.parseInt(operand1.getText().toString());
op2=Integer.parseInt(operand2.getText().toString());
op2-=op1;
if(v.getId()==R.id.button23){
result.setText(op2+"");
tv=operand1;
}
break;
case 3:
op1=Integer.parseInt(operand1.getText().toString());
op2=Integer.parseInt(operand2.getText().toString());
op2*=op1;
if(v.getId()==R.id.button23){
result.setText(op2+"");
tv=operand1;
}
break;
case 4:
op1=Integer.parseInt(operand1.getText().toString());
op2=Integer.parseInt(operand2.getText().toString());
op2/=op1;
if(v.getId()==R.id.button23){
result.setText(op2+"");
tv=operand1;
}
break;
}
}
}
如何分配操作?
//plus
if(v.getId()==R.id.button17){
operation = 1;
}
//minus
if(v.getId()==R.id.button15){
operation = 2;
}
//mult
if(v.getId()==R.id.button18){
operation = 3;
}
//div
if(v.getId()==R.id.button21){
operation = 4;
}
答案 0 :(得分:0)
private String operation;
在每个操作的输出中,您写道: 对于加号:
operation = "+";
对于减号:
operation = "-";
对于div:
operation = "/";
依旧...... 对于选中,请查询变量操作。 切换或如果。
switch (operation) {
case "+":
//Your operation
break;
case "-":
//Your operation
break;
case "/":
//Your operation
break;
}
答案 1 :(得分:0)
您应该在Activity
中的某个位置创建一个变量,用于存储按下的按钮(加号,减号等)的表示形式。这可能只是一个字符串值,表示“加号”,“减号”等。然后为每个操作员按钮实现OnClickListener
,适当地设置变量。然后你可以检查这个变量来看看执行了什么操作。
此外,您可以将它们合并为一个if
语句,而不是根据v.getId() == R.id.button23
语句将其组合为if
,而不是以op2
开头的四个Vue.component("formatted-number",{
props:["value", "decimals"],
data(){
return {
internalValue: this.format(this.value)
}
},
methods:{
format(value){ return parseFloat(value).toFixed(this.decimals || 2);},
onChange(){this.$emit('input', this.format(this.internalValue))}
},
template:'<input type="text" v-model="internalValue" @input="onChange" />'
})
语句。运算符变量的值。
答案 2 :(得分:0)
我会为此使用堆栈。例如,当您点击1时,将其添加到堆栈。当你点击+添加到堆栈。当你拿3时,将它添加到堆栈。然后,您可以将每个项目从状态中弹出,无论操作员是什么,您都可以执行该功能.....
您可以确定将每个项目从堆栈中弹出时的内容。如果#,存储在var1中,如果+, - ,/,*,则执行其他操作....按此方式执行此操作将允许您跟踪堆栈中的所有内容。
要注意的一件事是,如果你按顺序将8,3,1放在堆叠上,当你弹出它们时,它将是1,3,8。