java - 无法访问另一个方法的结果

标签 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;
    }
}

因此,我将几个参数传递给测试方法并返回答案,那么我是否应该能够在主方法中访问答案的结果?但我不能,我收到一个错误。我究竟做错了什么? Java 告诉我,我无法访问答案,即使我将 return 语句放在测试方法中,范围也不会扩展到 main 方法。那么我还能如何返回答案(不将其作为参数传递)?

最佳答案

您没有将返回值存储在任何变量中。此外,变量 answer 是在 test 方法中本地定义的,并且在 main 方法中不可见。因此,您的代码中将会出现编译器错误

您需要在主方法中包含以下代码:-

int result = test(1,2);
System.out.println(result);

现在,这里发生的是,它将 test(1, 2)返回值存储在局部变量 result,与test方法中定义的answer变量无关。然后您只需打印结果即可。

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

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

你的主要方法可以修改为:-

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

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

关于java - 无法访问另一个方法的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14586348/

相关文章:

extjs - 如何在 ExtJS 中的商店加载功能中使用范围

java - 客户端状态保存,我可以通过什么方式查看发送到客户端的状态数据?

c++ - 为什么我们可以从函数返回 char*?

java - 为什么 Scanner.next() 会导致 JUnit 测试挂起

java - 加密和解密密码并通过 http 共享

javascript - 页面刷新时清除服务中的数据

c# - 私有(private)变量在方法之间重置 c#

javascript - javaScript 中的警报函数

java - 我应该能够在 Eclipse 图形布局中看到 android 滚动条吗?

java - 在 Java 中合并两个数组列表