Java 如何一次执行一个操作?
我正在做android计算器。我做了一些功能,但第一个问题是双击操作。我试过了,但没有成功。当我单击两个操作时,它们都出现在文本视图上。我会发布我的代码,如果你能解决双击操作问题,请在评论中发布你的代码Java 如何一次执行一个操作?,java,android,Java,Android,我正在做android计算器。我做了一些功能,但第一个问题是双击操作。我试过了,但没有成功。当我单击两个操作时,它们都出现在文本视图上。我会发布我的代码,如果你能解决双击操作问题,请在评论中发布你的代码 public class MainActivity extends AppCompatActivity { private TextView _screen; private TextView _result; private String display = "";
public class MainActivity extends AppCompatActivity {
private TextView _screen;
private TextView _result;
private String display = "";
private String currentOperator;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
_screen = (TextView) findViewById(R.id.txtScreen);
_result = (TextView) findViewById(R.id.id_result);
}
public void updateScreen() {
_screen.setText(display);
}
public void onClickNumber(View v) {
Button b = (Button) v;
display += b.getText();
updateScreen();
}
public void onClickOperator(View v) {
Button b = (Button) v;
display += b.getText();
currentOperator = b.getText().toString();
updateScreen();
}
public void clear() {
display = "";
currentOperator = "";
}
public void onClickClear(View view) {
clear();
updateScreen();
}
public double operate(String a, String op, String b) {
switch (op) {
case "+":
return Double.valueOf(a) + Double.valueOf(b);
case "-":
return Double.valueOf(a) - Double.valueOf(b);
case "*":
return Double.valueOf(a) * Double.valueOf(b);
case "/":
return Double.valueOf(a) / Double.valueOf(b);
default:
return -1;
}
}
public void onClickEqual(View v) {
String[] operation = display.split(Pattern.quote(currentOperator));
_result.setText(String.valueOf(operate(operation[0], currentOperator, operation[1])));
}
}
我从您关于双重操作的问题中了解到的是,假设您正在执行+的操作,当您再次单击+时,它将在textview上显示2次(正如您的方法updateScreen所建议的)。如果这是问题所在,您可以按以下所述操作
public void updateScreen() {
if (screen.getText().toString().equalsIgnoreCase("")) {
screen.setText(display);
} else if (!display.equalsIgnoreCase(screen.getText().toString())) {
screen.setText("");
screen.setText(display);
} else {
//this is the case that means that operator is already set on the text
}
}
希望这对您有所帮助。问题不是这样的。当我单击+和-时,两个(+-)都在文本视图上。当我按下两个操作时,结果只有一个必须出现。您尝试过上述解决方案吗?