gpt4 book ai didi

Java循环与数组综合应用

转载 作者:行者123 更新时间:2023-12-01 12:42:22 27 4
gpt4 key购买 nike

问题如下:

在 Nim 游戏中,两名玩家轮流从一堆弹珠中取出弹珠。在每一步,玩家都会选择要拿走多少弹珠。玩家必须拿走至少一个但最多一半的弹珠。然后另一个玩家轮流进行。拿走最后一颗弹珠的玩家就输了。

编写一个程序,让两个玩家互相对抗。这程序首先提示玩家输入初始大小(范围:10 ~100包括在内)的弹珠堆。然后,两名玩家轮流输入要拿走的弹珠数量。该程序应该打印数量每次转动后都会留下弹珠。当剩下一颗弹珠时游戏停止堆。应打印获胜信息以表明获胜者是谁比赛结束后。你可以假设玩家总是输入一个数字在正确的范围内。完成该程序后,您可以实际上和你的邻居一起玩这个游戏。

<小时/>

示例如下:

Initial no. of marbles [10 ~ 100]: 15
Player1 [1 ~ 7]: 6
Remaining no. of marbles: 9
Player2 [1 ~ 4]: 4
Remaining no. of marbles: 5
Player1 [1 ~ 2]: 2
Remaining no. of marbles: 3
Player2 [1 ~ 1]: 1
Remaining no. of marbles: 2
Player1 [1 ~ 1]: 1
Remaining no. of marbles: 1
Player2 takes the last marble.
Player1 wins!
<小时/>

这是我个人的尝试(未完成):

import java.util.Scanner;

public class WhoTakesTheLastMarble {

public static void main(String[] args) {

Scanner in = new Scanner (System.in);
System.out.print("Intial no. of marbles [10 ~ 100]: ");
int n1 = in.nextInt();
int[] x = new int[91];
for (int i = 10; i<=100; i++) {
x[i] = in.nextInt();
}

System.out.print("Plyaer1 [1 ~ " +(n1/2) +"]:");
int n2 = in.nextInt();

System.out.println("Remaining no. of marbles: " +(n1-n2));
int n3 = in.nextInt();

System.out.print("Player2 [1 ~ " +(n3/2) +"]: ");
int n4 = in.nextInt();

System.out.println("Remaining no. of marbles: " +(n3-n4));

}

}
<小时/>

我面临的问题是如何将 for-loop/while-loop 应用于整个事情,以便它们可以一次又一次地重复,直到(剩余弹珠数量:1)

任何人都可以花五到十分钟帮助我解决这个问题并教我解决这个问题的方法吗?非常感谢:)

最佳答案

您可以使用 while 循环来查看是否剩下弹珠。您可能还想存储活跃玩家,以便可以对两个玩家回合使用相同的代码。

import java.util.Scanner;

/**
* Created by TheConstrcutor for http://stackoverflow.com/q/24981670/1266906
*/
public class WhoTakesTheLastMarble {
public static void main(String[] args) {

Scanner in = new Scanner(System.in);
System.out.print("Initial no. of marbles [10 ~ 100]: ");
int numberOfMarbles = in.nextInt();

int activePlayer = 1;
while (numberOfMarbles > 1) {
System.out.print("Player" + activePlayer + " [1 ~ " + (numberOfMarbles / 2) + "]: ");
int taken = in.nextInt();
numberOfMarbles -= taken;
System.out.println("Remaining no. of marbles: " + numberOfMarbles);

if (activePlayer == 1) {
activePlayer = 2;
} else {
activePlayer = 1;
}
}

System.out.println("Player" + activePlayer + " takes the last marble.");
if (activePlayer == 1) {
activePlayer = 2;
} else {
activePlayer = 1;
}
System.out.println("Player" + activePlayer + " wins!");
}
}

关于Java循环与数组综合应用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24981670/

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