有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

如何在java中返回到代码的开头

我目前正在一个java编程初学者班上做一个项目。该项目涉及制作一台自动售货机。基本上,自动售货机会问你想要什么东西,然后会向你要钱。每次有人选择某个项目时,特定项目的数量就会减少一个。我想做的是,当某个项目缺货(数量为0)时,代码返回到开头并再次询问您想要什么项目。我也希望这样,如果有人输入了一个无效的数字,代码也会重新启动。我该怎么做?这是密码

import java.util.Scanner;

public class VendingMachine {

public static void main(String[] args) {

    Scanner user_input = new Scanner(System.in);

    int potatoChips = 0;
    int cookies = 3;
    int candies = 4;
    int quarters;
    int dimes;
    int nickels;

    System.out.println("Select the number for the item you would like");
    System.out.println("For Potato Chips, Enter 1");
    System.out.println("For Cookies, Enter 2");
    System.out.println("For Candies, Enter 3");
    int itemSelection = user_input.nextInt();

        if (itemSelection == 1) {

            if (potatoChips > 0) {
                potatoChips = potatoChips - 1;
                System.out.println("You chose potato chips.");
                System.out.println("That will be $1.25");
                System.out.println("How many quarters do you have?");
                quarters = user_input.nextInt();
                System.out.println("How many dimes do you have?");
                dimes = user_input.nextInt();
                System.out.println("How many nickels do you have?");
                nickels = user_input.nextInt();

                int nickelsToPennies = (nickels * 5);
                int dimesToPennies = (dimes * 10);
                int quartersToPennies = (quarters * 25);

                int pennies = (nickelsToPennies + dimesToPennies + quartersToPennies);

                if (pennies < 125) {
                    System.out.println("You have not entered enough money. Have a great day.");
                }
                else if (pennies == 125 ) {
                    System.out.println("Here is your snack. Have a great day");
                }
                else {
                    double changeInPennies = (pennies - 125);
                    double change = (changeInPennies / 100);
                    System.out.println("Your change is $" + change + ". Have a great day.");
                }
            } 

            else {
                System.out.println("This item is out of stock. Please select another item.");
            }
        }

        if (itemSelection == 2) {

            if (cookies > 0) {
                cookies = cookies - 1;
                System.out.println("You chose a cookie.");
                System.out.println("That will be $0.85");
                System.out.println("How many quarters do you have?");
                quarters = user_input.nextInt();
                System.out.println("How many dimes do you have?");
                dimes = user_input.nextInt();
                System.out.println("How many nickels do you have?");
                nickels = user_input.nextInt();

                int nickelsToPennies = (nickels * 5);
                int dimesToPennies = (dimes * 10);
                int quartersToPennies = (quarters * 25);

                int pennies = (nickelsToPennies + dimesToPennies + quartersToPennies);

                if (pennies < 85) {
                    System.out.println("You have not entered enough money. Have a great day.");
                }
                else if (pennies == 85 ) {
                    System.out.println("Here is your snack. Have a great day");
                }
                else {
                    double changeInPennies = (pennies - 85);
                    double change = (changeInPennies / 100);
                    System.out.println("Your change is $" + change + ". Have a great day.");
                }
            } 

            else {
                System.out.println("This item is out of stock. Please select another item.");
            }
        }

        if (itemSelection == 3) {

            if (candies > 0) {
                candies = candies - 1;
                System.out.println("You chose a candy.");
                System.out.println("That will be $0.95");
                System.out.println("How many quarters do you have?");
                quarters = user_input.nextInt();
                System.out.println("How many dimes do you have?");
                dimes = user_input.nextInt();
                System.out.println("How many nickels do you have?");
                nickels = user_input.nextInt();

                int nickelsToPennies = (nickels * 5);
                int dimesToPennies = (dimes * 10);
                int quartersToPennies = (quarters * 25);

                int pennies = (nickelsToPennies + dimesToPennies + quartersToPennies);

                if (pennies < 95) {
                    System.out.println("You have not entered enough money. Have a great day.");
                }
                else if (pennies == 95 ) {
                    System.out.println("Here is your snack. Have a great day");
                }
                else {
                    double changeInPennies = (pennies - 95);
                    double change = (changeInPennies / 100);
                    System.out.println("Your change is $" + change + ". Have a great day.");
                }
            } 

            else {
                System.out.println("This item is out of stock. Please select another item.");
            }
        }

        else {
            System.out.println("This is not an item. Please select another item.");
            }
    }
}

共 (3) 个答案

  1. # 1 楼答案

    我做了一个小例子。基本概念是你可以做一个while循环。您可以添加一些东西,比如打破循环的附加条件,这可能需要防止无限循环。但基本概念是,这个小例子显然是每次有人选择它时,都会减少项目的数量。如果他们这样做了,我们从该物品的数量中减去1。然后,如果项等于0,我们使用CONTINUE语句重新开始循环,并要求他们再次选择。我认为你们在这里的会面是一个持续的声明。这将使您能够重新开始循环,而不会中断循环。它类似于break语句,只是如果特定条件为“true”,它不会完全退出循环,而是简单地重新启动循环。当本例中的1项或两项的数量均为0时,我们的条件为真:

    public class ChapterOneBasics {
         public static void main(String[] args) {
            int butterfinger = 5;
            int bQuantity = 3;
            int snickers = 4;
            int sQuantity = 3;
            Scanner reader = new Scanner(System.in);
    
            while(true){
                 System.out.println("Please select an item (5 for butter finger, 4 for snickers)");
                 int item = reader.nextInt();
                 if((item == 5 && bQuantity == 0) || (item == 4 && sQuantity == 0)) {
                     System.out.println("We are out of that item!");
                        continue;
            }
                 else {
                      if(item == 5) {
                      System.out.println("Here's your butter finger");
                      bQuantity ;
            }
                      else if(item == 4) {
                          System.out.println("Here is your snickers");
                          sQuantity ;
            }
                     else if(item != 5 || item != 4){
                          System.out.println("Enter a valid item");
                          continue;
                }
             }
    
        }
      }
    }
    

    以下是您的输出:

    Please select an item (5 for butter finger, 4 for snickers)
    5
    Here's your butter finger
    Please select an item (5 for butter finger, 4 for snickers)
    5
    Here's your butter finger
    Please select an item (5 for butter finger, 4 for snickers)
    5
    Here's your butter finger
    Please select an item (5 for butter finger, 4 for snickers)
    5
    We are out of that item!
    Please select an item (5 for butter finger, 4 for snickers)
    

    如您所见,continue语句强制循环在选择我们不在的项时重新开始

  2. # 2 楼答案

    必须使用连续的while循环。比如:

    while(true) {
        //collect user input
        //process
    }
    

    这样一来,当它处理完用户的请求后,它就会回到开始。如果您想在未完成时停止循环,比如输入错误,可以使用continue关键字停止当前循环并返回开始break将使您脱离整个while循环并结束代码

  3. # 3 楼答案

    可以使用while循环来实现这一点

    <>考虑以以下方式构造代码:

    Scanner user_input = new Scanner(System.in);
    
    // This will be used to track if the vending maching is finished or not
    boolean isFinished = false;
    
    // Use a while loop, which causes the program to repeat until the variable 
    // isFinished is true (see below)
    while(isFinished == false) {
    
        int potatoChips = 0;
        int cookies = 3;
        int candies = 4;
        int quarters;
        int dimes;
        int nickels;
    
        System.out.println("Select the number for the item you would like");
        System.out.println("For Potato Chips, Enter 1");
        System.out.println("For Cookies, Enter 2");
        System.out.println("For Candies, Enter 3");
        int itemSelection = user_input.nextInt();
    
        if (itemSelection == 1) {
    
            if (potatoChips > 0) {
                potatoChips = potatoChips - 1;
                System.out.println("You chose potato chips.");
                System.out.println("That will be $1.25");
                System.out.println("How many quarters do you have?");
                quarters = user_input.nextInt();
                System.out.println("How many dimes do you have?");
                dimes = user_input.nextInt();
                System.out.println("How many nickels do you have?");
                nickels = user_input.nextInt();
    
                int nickelsToPennies = (nickels * 5);
                int dimesToPennies = (dimes * 10);
                int quartersToPennies = (quarters * 25);
    
                int pennies = (nickelsToPennies + dimesToPennies + quartersToPennies);
    
                if (pennies < 125) {
                    System.out.println("You have not entered enough money. Have a great day.");
                }
                else if (pennies == 125 ) {
                    System.out.println("Here is your snack. Have a great day");
                }
                else {
                    double changeInPennies = (pennies - 125);
                    double change = (changeInPennies / 100);
                    System.out.println("Your change is $" + change + ". Have a great day.");
                }
    
                // This causes the machine loop to end
                isFinished = true;
            } 
    
            else {
                System.out.println("This item is out of stock. Please select another item.");
            }
        }
    
        if (itemSelection == 2) {
    
            if (cookies > 0) {
                cookies = cookies - 1;
                System.out.println("You chose a cookie.");
                System.out.println("That will be $0.85");
                System.out.println("How many quarters do you have?");
                quarters = user_input.nextInt();
                System.out.println("How many dimes do you have?");
                dimes = user_input.nextInt();
                System.out.println("How many nickels do you have?");
                nickels = user_input.nextInt();
    
                int nickelsToPennies = (nickels * 5);
                int dimesToPennies = (dimes * 10);
                int quartersToPennies = (quarters * 25);
    
                int pennies = (nickelsToPennies + dimesToPennies + quartersToPennies);
    
                if (pennies < 85) {
                    System.out.println("You have not entered enough money. Have a great day.");
                }
                else if (pennies == 85 ) {
                    System.out.println("Here is your snack. Have a great day");
                }
                else {
                    double changeInPennies = (pennies - 85);
                    double change = (changeInPennies / 100);
                    System.out.println("Your change is $" + change + ". Have a great day.");
                }
    
                // This causes the machine loop to end
                isFinished = true;
            } 
    
            else {
                System.out.println("This item is out of stock. Please select another item.");
            }
        }
    
        if (itemSelection == 3) {
    
            if (candies > 0) {
                candies = candies - 1;
                System.out.println("You chose a candy.");
                System.out.println("That will be $0.95");
                System.out.println("How many quarters do you have?");
                quarters = user_input.nextInt();
                System.out.println("How many dimes do you have?");
                dimes = user_input.nextInt();
                System.out.println("How many nickels do you have?");
                nickels = user_input.nextInt();
    
                int nickelsToPennies = (nickels * 5);
                int dimesToPennies = (dimes * 10);
                int quartersToPennies = (quarters * 25);
    
                int pennies = (nickelsToPennies + dimesToPennies + quartersToPennies);
    
                if (pennies < 95) {
                    System.out.println("You have not entered enough money. Have a great day.");
                }
                else if (pennies == 95 ) {
                    System.out.println("Here is your snack. Have a great day");
                }
                else {
                    double changeInPennies = (pennies - 95);
                    double change = (changeInPennies / 100);
                    System.out.println("Your change is $" + change + ". Have a great day.");
                }
    
                // This causes the machine loop to end
                isFinished = true;
            } 
    
            else {
                System.out.println("This item is out of stock. Please select another item.");
            }
        }
    
        else {
            System.out.println("This is not an item. Please select another item.");
        }
    }