gpt4 book ai didi

java - 在这种情况下如何防止方法运行两次?

转载 作者:行者123 更新时间:2023-11-30 02:06:11 27 4
gpt4 key购买 nike

这是我的代码的简化版本:

Thread t = new Thread() {
Scanner user = new Scanner(System.in);
public void run() {
setDistance();
}

void setDistance() {
System.out.print("Set distance.");
int distance = user.nextInt();
if (distance < ableJump) {
jump();
} else { // if you are too weak to jump that far
System.out.print("Too far!");
setDistance();
}
// after that:
if (player == 1) {
player = 2; // sets to 2 if it was player 1's turn
} else if (player == 2) {
player = 1; // sets to 1 if it was player 2's turn
}
System.out.printf("Player %d's turn", player);
/* now a method runs the threads again
* and the cycle continues..
*/
}
};

如果用户设置的距离太大,从而触发“太远”else 语句并再次调用该方法,用户将获得新的机会将距离设置为一个值。

但是问题是:setDistance()结束后,它又回到了它被调用的点,这个点也在setDistance()中,并从那里继续运行。这意味着 setDistance() 方法运行了两次,因此 player 变量切换回其原始状态。而且永远不会轮到玩家 2!

有没有其他方法可以做到这一点但得到相同的结果。

最佳答案

尝试花一段时间来做这件事,而不是记忆你的函数。

void setDistance() {
int distance;
while (true) {
System.out.print("Set distance.");
distance = user.nextInt();
if (distance < ableJump) {
break;
}
System.out.print("Too far!");
}
jump();
// after that:
player = 3 - player;
System.out.printf("Player %d's turn", player);
}

关于java - 在这种情况下如何防止方法运行两次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51286022/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com