Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/213.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何一次执行一个操作?_Java_Android - Fatal编程技术网

Java 如何一次执行一个操作?

Java 如何一次执行一个操作?,java,android,Java,Android,我正在做android计算器。我做了一些功能,但第一个问题是双击操作。我试过了,但没有成功。当我单击两个操作时,它们都出现在文本视图上。我会发布我的代码,如果你能解决双击操作问题,请在评论中发布你的代码 public class MainActivity extends AppCompatActivity { private TextView _screen; private TextView _result; private String display = "";

我正在做android计算器。我做了一些功能,但第一个问题是双击操作。我试过了,但没有成功。当我单击两个操作时,它们都出现在文本视图上。我会发布我的代码,如果你能解决双击操作问题,请在评论中发布你的代码

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
        }
    }

希望这对您有所帮助。

问题不是这样的。当我单击+和-时,两个(+-)都在文本视图上。当我按下两个操作时,结果只有一个必须出现。您尝试过上述解决方案吗?