首页 > 解决方案 > 如何根据java程序中的用户输入继续循环

问题描述

我有一个彩票程序,它将运行投注并随机生成数字。当用户的总赢额达到 5000 美元时,该用户可以选择兑现 5000 美元并使用剩余余额继续循环。如果选择不兑现,用户也将能够结束循环。如何根据用户输入继续循环?如果用户写的是,循环将继续,但我不知道该怎么做。有人可以帮忙吗?如果应该继续循环,由于提款而从用户的总奖金中扣除 5000 美元,剩余的余额将用于玩游戏。

我曾尝试将用户输入的 if 语句放在主循环中的多个位置,但用户预算不断增加,它并没有减去 5000 美元。

java.util.Scanner
while (budget > 0) {

                lottery = (int) (Math.random() * 100);
                guess = (int) (Math.random() * 100);

                budget -= 1;    // budget = budget-1;
                // Get digits from lottery
                int lotteryDigit1 = lottery / 10;
                int lotteryDigit2 = lottery % 10;

                // Get digits from guess
                int guessDigit1 = guess / 10;
                int guessDigit2 = guess % 10;

                System.out.println("The lottery number is " + lottery);
                System.out.println("The computer picked number is " + guess);

                // Check the guess
                if (guess == lottery) {
                    System.out.println("Exact match: you win $10,000");
                    totalWin += 1000;
                } else if (guessDigit2 == lotteryDigit1 && guessDigit1 == lotteryDigit2) {
                    System.out.println("Match all digits: you win $3,000");
                    totalWin += 300;
                } else if (guessDigit1 == lotteryDigit1 || guessDigit1 == lotteryDigit2 || guessDigit2 == lotteryDigit1
                        || guessDigit2 == lotteryDigit2) {

                    System.out.println("Match one digit: you win $1,000");
                    totalWin += 100;
                } else
                    System.out.println("Sorry, no match");

                budget += totalWin;
                totalWin=0;

                if (budget > initBudget)
                    if ((budget-initBudget) >= 5000) {

                        System.out.println("You have reached the goal of 5000, we can go home!");
                        System.out.println("Enter 1 if you would like to cash out and use remaining balance to play and 0 if you would like to stop");
                        int decison = input.nextInt();
                        if (decison==1){budget=budget-5000;
                        System.out.println("Budget After play " + budget);
                        continue;
                        }break;


                    } 

                System.out.println("Budget After play " + budget);

            }

所以在我的代码中,我有循环

System.out.println("Enter 1 if you would like to cash out and use remaining balance to play and 0 if you would like to stop");
int decison = input.nextInt();
    if (decison==1){budget=budget-5000;
System.out.println("Budget After play " + budget);
continue;
}break;
} 

这个循环应该接收用户输入,然后从总赢额中减去 5000 并使用剩余的预算继续玩.. 但它只会增加。如果我有-5000,不明白为什么它会增加。

(如果可能,请帮我将答案改为是/否,而不是输入 1)

标签: javaloopsbreakcontinue

解决方案


Erçin Akçay 解释了如何将输入从 int 更改为 String。

我查看了您的代码并使用它创建了一个可运行的 main 方法,它可以按您的预期工作。也许它需要从初始预算中获得 5k 的事实令人困惑?

if ((budget - initBudget) >= 5000)

这是我用来检查您的代码是否有帮助的整个课程:

import java.util.Scanner;

public class Test {
    private static int budget;
    private static int lottery;
    private static int guess;
    private static int totalWin;
    private static int initBudget = 4500;

    public static void main(String[] args) throws InterruptedException {
        Scanner input = new Scanner(System.in);
        budget = initBudget;

        while (budget > 0) {

            lottery = (int) (Math.random() * 100);
            guess = (int) (Math.random() * 100);

            budget -= 1;    // budget = budget-1;
            // Get digits from lottery
            int lotteryDigit1 = lottery / 10;
            int lotteryDigit2 = lottery % 10;

            // Get digits from guess
            int guessDigit1 = guess / 10;
            int guessDigit2 = guess % 10;

            System.out.println("The lottery number is " + lottery);
            System.out.println("The computer picked number is " + guess);

            // Check the guess
            if (guess == lottery) {
                System.out.println("Exact match: you win $10,000");
                totalWin += 1000;
            } else if (guessDigit2 == lotteryDigit1 && guessDigit1 == lotteryDigit2) {
                System.out.println("Match all digits: you win $3,000");
                totalWin += 300;
            } else if (guessDigit1 == lotteryDigit1 || guessDigit1 == lotteryDigit2 || guessDigit2 == lotteryDigit1
                    || guessDigit2 == lotteryDigit2) {

                System.out.println("Match one digit: you win $1,000");
                totalWin += 100;
            } else {
                System.out.println("Sorry, no match");
            }

            budget += totalWin;
            totalWin = 0;

            if (budget > initBudget) {
                if ((budget - initBudget) >= 5000) {

                    System.out.println("You have reached the goal of 5000, we can go home!");
                    System.out.println(
                            "Enter 1 if you would like to cash out and use remaining balance to play and 0 if you "
                                    + "would like to stop");
                    int decison = input.nextInt();
                    if (decison == 1) {
                        budget = budget - 5000;
                        System.out.println("Budget After play " + budget);
                        continue;
                    }
                    break;


                }
            }

            System.out.println("Budget After play " + budget);

        }
    }
}

推荐阅读