Java 如何在另一种方法中引用一种方法?为什么我只能在if语句中定义一个变量一次?

Java 如何在另一种方法中引用一种方法?为什么我只能在if语句中定义一个变量一次?,java,android,Java,Android,我正在努力使上述代码正常工作。首先,我想将布尔“add”从第一个方法引用到第二个方法,我该怎么做呢?此外,我在这一行上得到了一个“nota statement”错误 public void toggleoperator(View v){ ToggleButton oprtoggle = (ToggleButton) findViewById(R.id.operatortoggle); boolean add = ((oprtoggle.isChecked())); if

我正在努力使上述代码正常工作。首先,我想将布尔“add”从第一个方法引用到第二个方法,我该怎么做呢?此外,我在这一行上得到了一个“nota statement”错误

public void toggleoperator(View v){
    ToggleButton oprtoggle = (ToggleButton) findViewById(R.id.operatortoggle);
    boolean add = ((oprtoggle.isChecked()));
    if (add){
        oprtoggle.setTextOn("Add");
        int x = 1;

    } else {
        oprtoggle.setTextOff("Subtract");
        int x = -1;
    }


public void sumNumbers(View v){
    EditText input1 = (EditText) findViewById(R.id.input1);
    int calc1 =  Integer.parseInt(String.valueOf(input1.getText()));
    EditText input2 = (EditText) findViewById(R.id.input2);
    int calc2 = Integer.parseInt(String.valueOf(input2.getText()));
    int totaladd = calc1 + calc2;
    int totalsubtract = calc1 - calc2;
    if (add) {
        String result = String.valueOf(totaladd);
    } else {
        String result = String.valueOf(totalsubtract);
    }
    EditText output1 = (EditText)findViewById(R.id.output);
    output1.setText(result);
    }

帮忙?请你也解释一下,否则我就不学了

如果您试图用另一种方法访问某个变量,由于作用域的原因,它将无法工作

基本上,如果在方法中定义变量,它将仅对该方法可用。解决方法之一是在方法外部定义变量,以便该类中的所有方法都可以访问它们。另一个解决方案是返回变量,以便其他方法可以通过调用您的方法来访问它们

我建议阅读以下内容:


这是:

如果希望add boolean可以从这两个方法中访问,那么应该将其创建为类变量,而不是函数变量,或者通过参数将其传递给第二个函数

String result = String.valueOf(totalsubtract);
我不会说这是有史以来最好的示例代码,但是它是功能性的,应该可以解决您的问题


此外,我想指出,如果只需要其中一种方法,那么加法和减法都可以进行,这是微不足道的。这就是我改变计算方式的原因。

如果你想引用另一个方法中的一个方法,你只需调用第一个方法中的第二个方法

class Clazz {

    //Declares the variable at class scope (this should be false by default)
    boolean add;

    //Sets the value of the "add" boolean
    public void toggle () {
        add = toggle.isChecked();
    }

    public void secondMethod () {
        int diff = 0;
        if (add) {
            //make "diff" a positive value, based on what's entered.
        } else {
            //make "diff" a negative value, based on what's entered.
        }
        Display.setText(new String(diff));
    }
}
Java中的字段具有称为范围的内容。在方法或循环中定义的局部字段的范围在方法或循环结束时耗尽。 如果你想让整个类都能访问一个字段,你需要在方法之外定义它,你不需要立即初始化这个字段,你可以把它委托给构造函数或方法

public void methodA(){
    methodB();
    Object o = new Object();
    methodC(o);
}

public void methodB(){
    //do something
}

public void methodC(Object o){
    o.doSomething();
}

在继续之前,我会退一步,学习一些Java基础知识。您不能从任何其他地方引用方法的局部变量,它们是定义它们的方法的局部变量。此外,不能引用块外部块中定义的变量。这是基本的Java范围101。在不了解基本知识的情况下,事情将以指数级的速度发展。你能推荐一些好的资源吗?我觉得如果我自己编写代码并在编写过程中得到帮助,我会学到很多东西,而阅读Java文档会让我感到困惑。
public class Clazz{
    public int i;
    public Clazz(int i){
        this.i = i;
    }

    public void setI(int i){
        this.i = i;
    }
}