java - 返回值不变-java

标签 java

我的参数值在我传递它、编辑它并返回它之后似乎没有改变 - 它保持不变。

我可以就我做错的地方提供一些帮助吗?我正在创建一个简单的枪支类程序。问题出现在我的重新加载方法中。当我将子弹重新装填到枪中时,枪中的bulletsRemaining变为最大容量,但弹药值并没有减少。

public class Gun {

    String name;
    String sound;
    int minDamage;
    int maxDamage;
    int shotsPerSecond;
    int capacity;
    int bulletsRemaining;

    public Gun(String name, String sound, int minDamage, int maxDamage, int shotsPerSecond, int capacity, int bulletsRemaining) {
        this.name = name;
        this.sound = sound;
        this.minDamage = minDamage;
        this.maxDamage = maxDamage;
        this.shotsPerSecond = shotsPerSecond;
        this.capacity = capacity;
        this.bulletsRemaining = bulletsRemaining;
    }

    public void fire() {
        Random rnd = new Random();

        int totalDamage = 0;
        for(int x = 0; x<shotsPerSecond; x++)
        {
            int damage = rnd.nextInt(maxDamage) + 1;
            System.out.print(sound + "(" + damage + ")");
            totalDamage += damage;
        }

        System.out.println(" --> " + totalDamage + " Dmg/Sec ");
    }

    public void fireAtWill() {
        Random rnd = new Random();

        int totalDamage = 0;
        while(bulletsRemaining > 0) {
        for(int x = 0; x<shotsPerSecond; x++)
            {   
                int damage = rnd.nextInt(maxDamage) + 1;
                System.out.print(sound + "(" + damage + ")");
                totalDamage += damage;
                bulletsRemaining--;
                if(bulletsRemaining == 0)
                    break;
            }   

        System.out.println(" --> " + totalDamage + " Dmg/Sec ");
        totalDamage = 0;
        }
    }

    public int reload(int ammo) {
        //System.out.println();
        //System.out.println("Bullets remaining: " + bulletsRemaining);
        //System.out.println("Ammo remaining: " + ammo);
        //System.out.println("Reloading " + name);

        int bulletsReload = capacity - bulletsRemaining; //Amount of bullets to be loaded to gun
        ammo = ammo -= bulletsReload;
        bulletsRemaining = bulletsRemaining += bulletsReload; //Fill bulletsRemaining to the max again after reloading
        return ammo;
    }

    public void supressiveFire(int ammo) {

        Random rnd = new Random();

        int totalDamage = 0;
        while(ammo != 0) {
        while(bulletsRemaining > 0) {
        for(int x = 0; x<shotsPerSecond; x++)
            {   
                int damage = rnd.nextInt(maxDamage) + 1;
                System.out.print(sound + "(" + damage + ")");
                totalDamage += damage;
                bulletsRemaining--;                
            }   

            System.out.println(" --> " + totalDamage + " Dmg/Sec ");
            totalDamage = 0;
            if(bulletsRemaining == 0)
                    reload(ammo);
        }
      }
        if(ammo == 0)
            System.out.println("Out of ammunition)");

    }

    public static void main(String[] args) {
        // TODO code application logic here

        int ammo = 5;
        Gun g1 = new Gun("MK16", "Bang!", 10,15,5,5,5);

        g1.fire();
        g1.reload(ammo);
        System.out.println("Ammo left: " + ammo);
        System.out.println("Bullets left: " + g1.bulletsRemaining);


    }

}

预期输出:

Ammo: 0
Bullets Remaining: 5

我收到的输出:

Ammo: 5
Bullets Remaining: 5

最佳答案

您应该如下所示将其分配回来。

ammo = g1.reload(ammo);

主要内容

    public static void main(String[] args) {
        // TODO code application logic here

        int ammo = 5;
        Gun g1 = new Gun("MK16", "Bang!", 10,15,5,5,5);

        g1.fire();
        ammo = g1.reload(ammo);
        System.out.println("Ammo left: " + ammo);
        System.out.println("Bullets left: " + g1.bulletsRemaining);


    }

关于java - 返回值不变-java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38215744/

相关文章:

java - 查找给定范围内所有之前的星期二?

java - 为自定义查询实现 ViewModel 和 Repository

Java 8 日期时间 : get start of day from ZonedDateTime

java - 切换 Activity 时应用程序崩溃

java - 如何在 jtable 单元格中换行?

java - 实现事件驱动的轻量级线程

java - 如何在 OSX 10.6 Snow Leopard 上最好地安装 Rhino

java - Twitter api,用于使用访问 token 和 secret 获取好友列表

java - 在 Java 中测试隔离的自定义 JsonDeserializer

Java JSR-303 无需字节码编织的自动 Bean 验证