此任务的要点是有两名选手从一堆中拿出一根棍子。我上了一堂课,上面有很多木棍。有一种方法可以去除木棍。但是,当我尝试取出木棍时,木棍的数量不会改变。因此,游戏仍然无法结束,因为仍然有“左”杆。
我尝试使用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,
答案 0 :(得分:0)
您忽略了getSticksRemove
的返回。您不能重新分配参数以影响该函数外部的数字。
只需使用返回值:
sticks = getSticksRemove(sticks)
在两个地方都进行更改。