如何修复方法中未减去的类中的变量?

时间:2019-03-30 21:59:29

标签: java class methods

此任务的要点是有两名选手从一堆中拿出一根棍子。我上了一堂课,上面有很多木棍。有一种方法可以去除木棍。但是,当我尝试取出木棍时,木棍的数量不会改变。因此,游戏仍然无法结束,因为仍然有“左”杆。

我尝试使用int棒减去。棒的总量发生变化,但仅以减去的方式变化。摇杆的数量在主要方法中不变。

我决定使用类,就像在此站点上看到的那样,可以解决此问题。我没有成功。

因此,我创建了一个包含摇杆数量的类,因此现在每种方法的摇杆数量均相同。同样的问题仍然存在。一种更改getSticksRemove()方法中的摇杆数量,但不更改main()或getSticksLeft()的摇杆数量的方法。

    //Main Class
    public class Main {
    //Method to remove sticks which considers different scenarios.
        public static int getSticksRemove(int sticks) {
            sticks = StickPile.getValue(StickPile.value);
            Scanner input = new Scanner(System.in);
            print ("How many sticks to remove?(1-3)");
            int x = input.nextInt();

            if( x>=1 && x<=3) {
                sticks -= x;
            }else if(sticks < 3 && x ==2 ) {
                print("Not enough sticks left.");
                getSticksRemove(sticks);

            }else if (x>3) {
                sticks -=3;
            }else {    `enter code here`
                sticks-=1;
        }
        print(sticks);
        return sticks;
    }
//Main method


    public static void main(String [] args) {
        StickPile stickPile = new StickPile();

        int turnP1 = 0;
        int turnP2 = 0;
        int sticks = 0;

    print("How many sticks are there initially? (1-100)");
        StickPile.setValue();
        sticks = StickPile.getValue(StickPile.value);

//This is the loop that determines when to stop the game

        while(sticks != 0) {
            System.out.print("Player 1: ");
            getSticksRemove(sticks);
            getSticksLeft(sticks);
            turnP1++;

            System.out.print("Player 2: ");
            getSticksRemove(sticks);
            getSticksLeft(sticks);
            turnP2++;
        }
        if(turnP1 % 2 == 0 && turnP2 % 2 == 1) {
            System.out.println("P2 Loses");
        }else {
            System.out.println("P1 Loses");
        }
    }
}

// This StickPile class is the one I made to store the number of sticks.


public class StickPile {
    static Scanner input  = new Scanner(System.in);
    public static int value;

    public static void setValue() {
        value = input.nextInt();
        }

    public static int getValue(int x) {
        x = value;
        System.out.println(x);
        return x;
    }

我希望输入一些木棍以从堆中移出。例如堆数量:20->移除:12->堆数量:8。

However, I get Ex. PileAmoun: 20 --> Remove: 5--> PileAmount: 20,

1 个答案:

答案 0 :(得分:0)

您忽略了getSticksRemove的返回。您不能重新分配参数以影响该函数外部的数字。

只需使用返回值:

sticks = getSticksRemove(sticks)

在两个地方都进行更改。