Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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执行While循环问题_Java_Loops_While Loop - Fatal编程技术网

Java执行While循环问题

Java执行While循环问题,java,loops,while-loop,Java,Loops,While Loop,已编辑,仅存在盆值不循环的问题 我正在开发一个简单的赌博游戏,我的循环有问题。游戏做了我想做的一切,直到它循环回来。我不想让罐子重置回我设定的100美元的静态金额它也不会提供新的骰子卷。修复(感谢Prodian)。似乎循环将继续重置回原始数量,并且不会考虑最后一轮。我有一种感觉,这只是一个错误的变量放置的问题,但我已经尝试过移动它们,我只是不能围绕解决方案来思考。任何帮助都将不胜感激 import java.util.Scanner; import java.util.Random; publ

已编辑,仅存在盆值不循环的问题

我正在开发一个简单的赌博游戏,我的循环有问题。游戏做了我想做的一切,直到它循环回来。我不想让罐子重置回我设定的100美元的静态金额它也不会提供新的骰子卷。修复(感谢Prodian)。似乎循环将继续重置回原始数量,并且不会考虑最后一轮。我有一种感觉,这只是一个错误的变量放置的问题,但我已经尝试过移动它们,我只是不能围绕解决方案来思考。任何帮助都将不胜感激

import java.util.Scanner;
import java.util.Random;

public class gamblinggame {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        Random ran = new Random();

        double bet;
        double pot = 100;
        int r1 = ran.nextInt(6) + 1;
        int r2 = ran.nextInt(6) + 1;
        int r3 = ran.nextInt(6) + 1;

        System.out.println("*** Gambling Game ***");
        System.out.println("Your starting pot is $100, please place a bet less than or equal to the pot.");

        do {

             r1 = ran.nextInt(6) + 1; // continues to re-roll dice
             r2 = ran.nextInt(6) + 1;
             r3 = ran.nextInt(6) + 1;

            bet = scanner.nextDouble();
            if (bet > pot) {
                System.out.println("Invalid amount. Please place a new bet.");
                continue;
            }
            if (bet >= 1) {
                System.out.println("Your new pot is $" + (pot - bet) + ".");
                System.out.println("Rolling the dice.");
                System.out.println(
                        "You rolled " + r1 + ", " + r2 + ", " + r3 + ".  The total amount rolled is " + (r1 + r2 + r3));
                if (r1 == r2 || r1 == r3 || r2 == r3) {
                    System.out.println("You win DOUBLE your bet back!");
                    System.out.println("Your new pot is $" + (pot + (bet * 2)) + ".");
                } else if (r1 == r2 && r1 == r3 && r2 == r3) {
                    System.out.println("You win TRIPLE your bet back!");
                    System.out.println("Your new pot is $" + (pot + (bet * 3)) + ".");
                } else if (r1 + r2 + r3 >= 10) {
                    System.out.println("You win your bet back!");
                    System.out.println("Your new pot is $" + (pot) + ".");
                }
                System.out.println("Enter a new bet equal to or below the pot.");
            }


            if (bet > pot) {
                System.out.println("Invalid amount. Please place a new bet.");
                continue;
            } 
            if (bet == 0) {
                System.out.println("Game Over. Please play again!");
            break;
            }
        } while (pot > 0);
    }
}

你应该重新掷骰子,重新掷骰子的解决方案是:

....
int r1 = ran.nextInt(6) + 1; 
int r2 = ran.nextInt(6) + 1;
int r3 = ran.nextInt(6) + 1;
....
do{
 r1 = ran.nextInt(6) + 1; // again random at the start of do-while loop is necessary
 r2 = ran.nextInt(6) + 1;
 r3 = ran.nextInt(6) + 1;
....
}.....

你从不重新掷骰子。你有
pot=startingPot-bet在循环内部。不管你下了多少赌注,它总是以起始赌注为基础的。也许值得注意的是,使用数组进行此操作:
int[]rs=ran.int(3,1,7)
是另一种选择(循环外不需要滚动值,因此不需要
do
前面的位)。谢谢,这很有帮助!现在我只是有一个关于大麻数量的问题。我的英语不够好,无法理解,或者我不知道大麻是什么。大麻该怎么办?什么是锅。告诉我它应该做什么,然后我也可以回答这个问题。