Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
关于循环和数组的Java集成应用程序_Java_Arrays_For Loop - Fatal编程技术网

关于循环和数组的Java集成应用程序

关于循环和数组的Java集成应用程序,java,arrays,for-loop,Java,Arrays,For Loop,问题如下: 在尼姆的游戏中,两名玩家轮流从一堆弹珠中取出弹珠。在里面 每一步,一个玩家选择要拿多少颗弹珠。球员 必须至少取一块但最多取一半的大理石。然后另一个 球员转身。拿走最后一块大理石的人输了 写一个程序,两个玩家在其中互相比赛。这个 程序首先提示玩家输入初始大小(范围:10~100) (包括)一堆大理石。然后,两个玩家轮流输入 要拍摄的弹珠数量。该程序应打印 每转一圈后,弹珠就会离开。当一颗弹珠落下时,游戏停止 那堆。获奖信息应打印出来,以表明获奖者是谁 比赛结束后。你可以假设玩家总是输入

问题如下:

在尼姆的游戏中,两名玩家轮流从一堆弹珠中取出弹珠。在里面 每一步,一个玩家选择要拿多少颗弹珠。球员 必须至少取一块但最多取一半的大理石。然后另一个 球员转身。拿走最后一块大理石的人输了

写一个程序,两个玩家在其中互相比赛。这个 程序首先提示玩家输入初始大小(范围: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!");
    }
}