Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.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中使用netbeans每次掷骰子后继续游戏?_Java_Netbeans_Dice - Fatal编程技术网

我如何询问用户是否希望在java中使用netbeans每次掷骰子后继续游戏?

我如何询问用户是否希望在java中使用netbeans每次掷骰子后继续游戏?,java,netbeans,dice,Java,Netbeans,Dice,我需要帮助回答这个问题: 掷骰子游戏是用两个六面骰子进行的。玩游戏的用户将掷两个骰子,并生成1到6之间的两个随机数。两个数字之和将用于决定下一步 如果总和为2、3或12,则玩家获胜。如果总数是7或11,那么他/她就输了。如果总和是4、5、6、8、9或10,那么程序会自动再次掷骰子,直到玩家赢或输 每次掷骰子后,玩家都会被提示输入。玩家应决定游戏是否继续 每次掷骰子后,还应显示赢得和输掉的游戏数量 我已经设法让第一部分工作,但无法计算如何提示用户,如果他们希望继续或有多少游戏他们赢/输了 publ

我需要帮助回答这个问题:

掷骰子游戏是用两个六面骰子进行的。玩游戏的用户将掷两个骰子,并生成1到6之间的两个随机数。两个数字之和将用于决定下一步


如果总和为2、3或12,则玩家获胜。如果总数是7或11,那么他/她就输了。如果总和是4、5、6、8、9或10,那么程序会自动再次掷骰子,直到玩家赢或输

每次掷骰子后,玩家都会被提示输入。玩家应决定游戏是否继续

每次掷骰子后,还应显示赢得和输掉的游戏数量

我已经设法让第一部分工作,但无法计算如何提示用户,如果他们希望继续或有多少游戏他们赢/输了

public class DiceGame {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
      
        while (true) {
            int dice1=(int)(Math.random()*6+1);
            int dice2=(int)(Math.random()*6+1);
            int sum = dice1 + dice2;
            
            System.out.println("Roll: total = " + sum);
            
            if (sum==2 || sum==3 || sum==12) {
                System.out.println("Sorry with a " +  sum  + " you loose :(");
                break;
            }
            else if(sum==7 || sum==11) {
                System.out.println("With a " + sum + " you win :)");
                break;
            }
        }
    }
}

您可以使用java Scanner类提示用户输入

在while循环中,提示用户输入。您可能需要修改while循环条件

Scanner sc = new Scanner(System.in);
int i = sc.nextInt();
根据用户的输入,使用“制动”退出回路。应该这样做


我创建了一个
playAgainMessage
方法,该方法返回一个int。这决定用户是否将再次播放。请查看:

import java.util.Scanner;

public class DiceGame {
    private static final int PLAY = 1;
    private static final int DO_NOT_PLAY = 2;
    private static int choice = 1;

    public static void main(String[] args) {
        while (choice == PLAY) {
            int dice1=(int)(Math.random()*6+1);
            int dice2=(int)(Math.random()*6+1);
            int sum = dice1 + dice2;

            System.out.println("Roll: total = " + sum);

            if (sum==2 || sum==3 || sum==12) {
                System.out.println("Sorry with a " +  sum  + " you loose :(");
                choice = playAgainMessage();
            }
            else if(sum==7 || sum==11) {
                System.out.println("With a " + sum + " you win :)");
                choice = playAgainMessage();
            }
        }
        if (choice == DO_NOT_PLAY) {
            System.out.println("Good bye...");
        }
    }

    private static int playAgainMessage() {
        Scanner input = new Scanner(System.in);
        System.out.println("Would you like to play again? '1' for yes, '2' for no");
        int choice = input.nextInt();
        input.close();
        if(choice == PLAY){
            System.out.println("Rolling...");
            return PLAY;
        } else {
            return DO_NOT_PLAY;
        }
    }
}
您可以随时调用
playAgainMessage
方法,这使它既美观又易于阅读


这将一直播放,直到用户输入除“1”以外的内容。尝试运行它以查看确切的输出。

您可以使用
do{}while()循环,它将播放一次,然后要求用户再次播放:

Scanner sc = new Scanner(System.in);
String input = "";
do {
    int // ...

    System.out.println("Roll: total = " + sum);

    if (sum == 2 || sum == 3 || sum == 12) {
        // ...
    } else if (sum == 7 || sum == 11) {    
        // ...
    }

    System.out.println("If you want to continue, write 'y' : ");
    input = sc.nextLine();
} while (input.equalsIgnoreCase("y"));

扫描仪可用于提示用户询问他/她是否要继续

你甚至可以追踪掷骰子的次数

import java.util.Scanner;

public class DiceGame {

    public static int attempt = 1;
    /**
     * @param args
     *            the command line arguments
     */
    public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);
        int dice1 = (int) (Math.random() * 6 + 1);
        int dice2 = (int) (Math.random() * 6 + 1);
        int sum = dice1 + dice2;

        while (true) {
            System.out.println();
            System.out.println("Rolling dice for " + attempt + " time!");

            dice1 = (int) (Math.random() * 6 + 1);
            dice2 = (int) (Math.random() * 6 + 1);
            sum = dice1 + dice2;

            System.out.println("Roll: total = " + sum);

            if (sum == 2 || sum == 3 || sum == 12) {
                System.out.println("Sorry with a " + sum + " you loose :(!");
                System.out.println();
                break;
            } else if (sum == 7 || sum == 11) {
                System.out.println("With a " + sum + " you win :)!");
                System.out.println();
                break;
            }
            System.out.println();
            System.out.println("Do you wish to continue? Press 'y' for YES or ANY key for EXIT");
            if (!scanner.next().equalsIgnoreCase("y")) {
                break;
            }
            attempt++;
        }
        System.out.println("Thanks for playing dice game, you rolled the dice " + attempt + " times!");
    }
}
EDIT:
如果您想在总和为4 5 6 8 9 10时自动掷骰子,则不再需要扫描仪,即用户输入是否继续

这里有同样的解决方案

public class DiceGame {

    public static int attempt = 1;

    public static void main(String[] args) {

        int dice1 = 0;
        int dice2 = 0;
        int sum = 0;

        while (true) {
            System.out.println();
            System.out.println("Rolling dice for " + attempt + " time!");

            dice1 = (int) (Math.random() * 6 + 1);
            dice2 = (int) (Math.random() * 6 + 1);
            sum = dice1 + dice2;

            System.out.println("Roll: total = " + sum);

            if (sum == 2 || sum == 3 || sum == 12) {
                System.out.println("Sorry with a " + sum + " you loose :(!");
                System.out.println();
                break;
            } else if (sum == 7 || sum == 11) {
                System.out.println("With a " + sum + " you win :)!");
                System.out.println();
                break;
                // this will roll the dices automatically
                // when sum is 4, 5, 6, 8, 9 or 10
            } else {
                System.out.println();
                System.out.println("With " + sum + " dices are rolled again automatically!!");
                attempt++;
            }
        }
        System.out.println("Thanks for playing dice game, you rolled the dice " + attempt + " times!");
    }
}
样本运行

Rolling dice for 1 time!
Roll: total = 4

With a 4, dices are rolled again automatically!!

Rolling dice for 2 time!
Roll: total = 6

With a 6, dices are rolled again automatically!!

Rolling dice for 3 time!
Roll: total = 2
Sorry with a 2 you loose :(!

Thanks for playing dice game, you rolled the dice 3 times!

做一个if语句,程序将在其中询问您,如果您选择不想继续,只需添加一个
中断。我想你已经知道如何从标准输入和所有这些东西中获取数据。@Bec-我的解决方案具有你需要的两种风格(通过扫描仪进行用户输入,并且在4 5 6 8 9 10时没有自动滚动的用户输入)。请接受我的答案,如果对你有效,请投赞成票@Bec-请接受我的答案并投票赞成,如果它解决了你的问题!嗨,这个半工作状态表示尝试不存在,我不确定在这里放置什么int-trunt=;为了显示掷骰子的次数,您必须像我一样声明和初始化尝试为1,publicstaticinttrunt=1;如果总和是4、5、6、8、9或10,那么程序会自动再次掷骰子,直到玩家赢或输。你知道如何做到这一点吗?是的,我更新了我的帖子,提供了另一种解决方案,你想再次掷骰子,直到玩家赢或输,即当总和为4 5 6 8 9 10时自动掷骰子。如果这是你所期望的,那么请接受答案并投票赞成!