在交换机中存储变量[Java]

时间:2014-08-14 22:55:10

标签: java android

我目前正在为Android制作计算器(我没有使用任何教程)并遇到了问题。

我有这个:

public void buttonOnClick(View v){

   int operation;

   switch (v.getId()){
      case R.id.one:
          numberBox.append("1");
          break;
      case R.id.two:
          numberBox.append("2");
          break;
      case R.id.plus:
          operation=1;
          break;
      case R.id.eq:
          if (operation == 1){
              // Print value
          }
      break;
      default:
          break;
    }

}

请注意,这不是确切的代码,它只是一个模型。

问题是,在这个案例的范围内,当操作设置为1时,它没有公开设置,当我在equals情况下读取它时,它被设置回0.

如何解决此问题?

2 个答案:

答案 0 :(得分:2)

您必须是Java或任何其他编程语言的新手:

局部变量仅用于声明它们的方法 无论什么时候退出方法,变量都会被销毁以及它的值。

因此,每次输入新变量时都会初始化。

要完成这项工作,只需创建一个全局类变量并使用它或

将对象传递给包含某个int变量的方法:当前操作,然后使用该对象读/写变量。

答案 1 :(得分:0)

在您的情况下,最好使用全局类变量:

public class MyClass {
        int operation;

        public int getOperation() {
            return operation;
        }

        public void setOperation(int value) {
            this.operation = value;
        }

        .....

THEN:

....

    public void buttonOnClick(View v){

    ...

    case R.id.plus:
              this.operation = 1;
              break;
          case R.id.eq:
              if (this.operation == 1){
                  // Print value
              }
          break;

    .....