You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Java不同方法中访问同一变量?新手求助

解决方法

你的核心问题是方法里的局部变量和类的静态成员变量重名了,导致赋值没给到全局的静态变量,所以其他方法拿不到值。下面是具体修改方案:

方案一:利用已有的静态成员变量

你已经在类里定义了private static int ucakrenk;,但在ucakrenk()方法里又重新声明了同名局部变量,覆盖了全局的静态变量。只需要去掉方法里的int,直接给静态变量赋值:

package aviator;

import java.util.Random;

public class Main {
    private static int ucakrenk;
    public static void main(String[] args) {
        
        Random random = new Random();
        ucak mainucak = new ucak(7, 8, 9);
        
        ucakrenk();
        kusurat();
        test();

    }

    private static void test() {
        System.out.println("Siradaki ucak:");
        System.out.println("+-renk: " + ucakrenk);
    }

    private static void kusurat() {
        // 如果之后要在其他方法用kusurat的值,同样可以改成静态变量或者返回值
        Random random = new Random();
        int kusurat = random.nextInt(100);
        
    }

    public static void ucakrenk() {
        Random random = new Random();
        ucakrenk = random.nextInt(100); // 去掉前面的int,直接给类的静态变量赋值
    }
}

方案二:让方法返回生成的值(不用静态变量)

如果你不想用全局的静态变量,也可以让ucakrenk()方法返回生成的随机数,然后在需要的地方接收这个值:

package aviator;

import java.util.Random;

public class Main {
    public static void main(String[] args) {
        
        Random random = new Random();
        ucak mainucak = new ucak(7, 8, 9);
        
        int renkValue = ucakrenk(); // 接收方法返回的随机数
        kusurat();
        test(renkValue); // 把值传给test方法

    }

    private static void test(int renk) {
        System.out.println("Siradaki ucak:");
        System.out.println("+-renk: " + renk);
    }

    private static void kusurat() {
        Random random = new Random();
        int kusurat = random.nextInt(100);
        
    }

    public static int ucakrenk() { // 方法返回类型改成int
        Random random = new Random();
        return random.nextInt(100); // 返回生成的随机数
    }
}

简单说明

  • 静态成员变量属于整个类,所有静态方法都能直接访问,只要别在方法里重新定义同名变量覆盖它。
  • 用方法返回值的方式更灵活,不需要依赖全局变量,适合只在特定地方传递值的场景。

内容的提问来源于stack exchange,提问作者bogul du

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 16:05:22