无法访问另一个方法中的结果

use*_*185 0 java scope

我有范围问题,我不知道如何解决它.这是一个简单的程序来说明我的问题:

public class testing {

    public static void main(String args[]) {
        test(1,2);
        System.out.println(answer);
    }

    public static int test(int x, int y) {
        int answer = x + y;
        return answer;
    }
}
Run Code Online (Sandbox Code Playgroud)

所以我将一些参数传递给测试方法并返回答案,所以我不能在主方法中访问答案的结果吗?但我不能,我得到一个错误.我究竟做错了什么?Java告诉我,我无法访问答案,即使我将return语句放在test方法中,范围也不会扩展到main方法.我怎么能回答答案(不作为参数传递)?

Roh*_*ain 6

您没有存储return value任何变量.此外,变量在方法中本地answer定义,并且在方法中不可见.因此,您的代码中会出现编译器错误.testmain

您需要在主方法中使用此代码: -

int result = test(1,2);
System.out.println(result);
Run Code Online (Sandbox Code Playgroud)

现在,这里发生的是,它将return valueof 存储test(1, 2)局部变量中 result,该answer变量与test方法中定义的变量无关.然后你只需打印result背面.

此外,您可以将test方法更改为: -

public static int test(int x, int y) {
    // int answer = x + y; // No need to define a local variable.
    return x + y;
}
Run Code Online (Sandbox Code Playgroud)

并且您的主要方法可以修改为: -

public static void main(String[] args) {
    System.out.println(test(1, 2));
}
Run Code Online (Sandbox Code Playgroud)

请注意,这消除了声明局部变量(在maintest方法中)的需要.