繁体   English   中英

如何在Java程序中基于用户输入继续循环

[英]How to continue loop based on user input in java program

我有一个彩票程序,可以运行投注并随机生成数字。 当用户的总奖金达到$ 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)

我假设您正在使用java.util.Scanner 这是答案;

System.out.println("Enter yes if you would like to cash out and use remaining balance to play and no if you " +
                "would like to stop");
String decison = input.nextLine();
if ("yes".equals(decison))
{
    budget = budget - 5000;
    System.out.println("Budget After play " + budget);
    continue;
}
break; // break the statement.

ErçinAkç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);

        }
    }
}

您可以这样更改代码:

System.out.println("Enter yes if you would like to cash out and use remaining balance to play and no if you would like to stop");
String decision = input.next();
if ("Yes".equalsIgnoreCase(decision)) { // Cashing Out
    budget = budget - 5000;
    System.out.println("Budget After play " + budget);
    continue;
}
break; // breaking the loop (if user enters anything other than yes)

在这里,我使用了String (将用户的响应存储为单词)。 如果他输入YesyesYES (忽略大小写,则认为用户要兑现),循环不会中断。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM