关于循环和数组的Java集成应用程序
问题如下: 在尼姆的游戏中,两名玩家轮流从一堆弹珠中取出弹珠。在里面 每一步,一个玩家选择要拿多少颗弹珠。球员 必须至少取一块但最多取一半的大理石。然后另一个 球员转身。拿走最后一块大理石的人输了 写一个程序,两个玩家在其中互相比赛。这个 程序首先提示玩家输入初始大小(范围:10~100) (包括)一堆大理石。然后,两个玩家轮流输入 要拍摄的弹珠数量。该程序应打印 每转一圈后,弹珠就会离开。当一颗弹珠落下时,游戏停止 那堆。获奖信息应打印出来,以表明获奖者是谁 比赛结束后。你可以假设玩家总是输入一个 数字在正确的范围内。完成程序后,您可以 和你的邻居玩这个游戏关于循环和数组的Java集成应用程序,java,arrays,for-loop,Java,Arrays,For Loop,问题如下: 在尼姆的游戏中,两名玩家轮流从一堆弹珠中取出弹珠。在里面 每一步,一个玩家选择要拿多少颗弹珠。球员 必须至少取一块但最多取一半的大理石。然后另一个 球员转身。拿走最后一块大理石的人输了 写一个程序,两个玩家在其中互相比赛。这个 程序首先提示玩家输入初始大小(范围:10~100) (包括)一堆大理石。然后,两个玩家轮流输入 要拍摄的弹珠数量。该程序应打印 每转一圈后,弹珠就会离开。当一颗弹珠落下时,游戏停止 那堆。获奖信息应打印出来,以表明获奖者是谁 比赛结束后。你可以假设玩家总是输入
示例如下:
以下是我个人的尝试(未完成):
import java.util.Scanner;
公共课谁拿最后一块大理石{
公共静态void main(字符串[]args){
扫描仪输入=新扫描仪(系统输入);
系统输出打印(“大理石初始编号[10~100]:”;
int n1=in.nextInt();
int[]x=新的int[91];
对于(int i=10;i您可以使用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!");
}
}
我尝试过,如果变量“activePlayer”的第8行(从下面开始计数)中出现了一个名为“未解决的编译问题:无法访问的代码”的错误。这意味着什么?如何消除它?@user3865063这意味着在到达某个代码之前,永远无法满足某个条件或始终退出某个方法,因此所讨论的代码将永远不会执行。由于我没有收到此消息,我会假设您有一个输入错误,并且不会依次为其指定1和2activePlayer@user3865063在注释中,您的while(true)
没有中断
,这意味着while
之后的代码永远不会运行。更改为while(n1>1)
应该可以。我已经将您的答案编辑到我的版本中。唯一的区别是变量:numfMarbles->n1;take->n2;activePlayer->pn@user3865063正如我2分钟前所说:while(true)
将永远循环。将其更改为while(n1>1)
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));
}
}
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!");
}
}