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

Java中为何passenger值未被方法修改,station值却可改变?

问题分析:passenger值无法修改的原因

核心原因:Java基本类型的「值传递」特性

Java中,基本数据类型(比如int)作为方法参数传递时,传递的是变量的副本而非原变量本身。

看你的代码:

  • 调用passengerChange(station, passenger)时,passenger的当前数值会被复制给方法内的参数p。你在passengerChange里对p的所有修改,都只作用于这个副本,不会影响外部的静态变量passenger,所以输出里passenger始终是初始值0。
  • 而station的值能改变,是因为你在for循环里直接修改了静态变量station(station++),操作的是原变量本身,所以每次循环都会更新它的值。

修复方案

有两种简单的修复方式:

方式1:接收方法返回值,更新原变量

修改main方法里的调用代码,把方法返回的新值赋值给passenger:

public static void main(String[] args) {
    station = 0;
    passenger = 0;
    
    for(station = 0; station <=5; station++) {
        System.out.println("Station	Passenger");
        // 接收返回值并赋值给passenger
        passenger = passengerChange(station,passenger);
        System.out.println(station + "	" + passenger);
    }
}

方式2:直接操作静态变量,无需传递参数

因为passenger是静态变量,passengerChange方法可以直接访问它,不用作为参数传入:

public static void passengerChange(int s) {
    if(s==1 || s==5) {
        passenger++;
    }
    if(s==2 || s==3) {
        passenger = passenger +2 -1;
    }
    if(s==4) {
        passenger--;
    }
}

调用时直接传station即可:

passengerChange(station);

原代码与输出

你的原代码:

public class BusGame {
    
    static int station, passenger;

    public static void main(String[] args) {
        station = 0;
        passenger = 0;
        
        for(station = 0; station <=5; station++) {
            System.out.println("Station	Passenger");
            passengerChange(station,passenger);
            System.out.println(station + "	" + passenger);
        }
    }
    
    public static int passengerChange(int s,int p) {
        if(s==1 || s==5) {
            p++;
        }
        if(s==2 || s==3) {
            p=p+2-1;
        }
        if(s==4) {
            p--;
        }
        return p;
    }
}

输出结果:

Station Passenger
0       0
Station Passenger
1       0
Station Passenger
2       0
Station Passenger
3       0
Station Passenger
4       0
Station Passenger
5       0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 20:18:34