具有多个选项的菜单 java

Menu with multiple options java

我正在尝试创建一个程序,允许用户从菜单中 select 项目并在最后计算总数。我不必使用 运行ning 总数,但这是我看到的用我所知道的做这件事的最佳选择。 当我 运行 此代码时,我收到错误

$java -Xmx128M -Xms16M Main
Would you like (1.) Spaghetti, (2.) Hotdog, (3.) Cookie, (4.) Chicken Nuggets? Please enter a number value. Enter 0 to complete your order.
Exception in thread "main" java.util.NoSuchElementException
    at java.util.Scanner.throwFor(Scanner.java:862)
    at java.util.Scanner.next(Scanner.java:1485)
    at java.util.Scanner.nextDouble(Scanner.java:2413)
    at Main.main(Main.java:17)

不太明白为什么。非常感谢任何有关清理我的代码或解释此错误的帮助。

    import java.text.DecimalFormat;
    import java.util.Scanner;
    
    public class Main{
        public static void main(String args[]){
            DecimalFormat df = new DecimalFormat("#.##");
            Scanner input = new Scanner(System.in);
        
        
            double Spaghetti = 1.03;
             double hotdog = 3.09;
              double Cookie = .59;
               double ChickenNuggets = 54.36;
               double total = 0.0;
               
               System.out.println("Would you like (1.) Spaghetti, (2.) Hotdog, (3.) Cookie, (4.) Chicken Nuggets? Please enter a number value. Enter 0 to complete your order.");
               double option = input.nextDouble();
               
               while (option != 0){
                   option =+ total;
               }
               if(option == 1){
                   Spaghetti += total;
               }
                if(option == 2){
                   hotdog += total;
               }
                if(option == 3){
                   Cookie += total;
               }
                if(option == 4){
                   ChickenNuggets += total;
               }
                 System.out.println("Your total is " + total);
        }
        
    }

根据评论,您没有正确地添加到总数中。 正确的语法是:

total += Cookie; 

total = total + Cookie;

此外,由于您提到代码应该允许多项选择,因此您必须实现代码以允许多项选择。有几种方法可以做到这一点:

一个很好用的结构应该是类似于在 C 中为 getopt_long() 推荐的结构,但对于 Java 显然是这样。可以在此处阅读手册页 https://linux.die.net/man/3/getopt_long

double option;
while(true)
{
    option = input.nextDouble();      
  
    if(option == 0) //If option is 0 then you quit asking the user
    {
        break; //session terminated
    }

    switch (option) {
        case 1.0: 
            total += spaghetti;
            break;
    
        case 2.0:
            total = total + hotdog;
            break;
        case 3.0:
            total += Cookie;
            break;
        case 4.0:
            total  = total + ChickenNuggets;
            break;

        default:
            System.out.println("Wrong input, try again");    
            break;
    }

}

如果您不想使用 switch 语句,这个问题的另一个很好的解决方案是循环和半。 https://codehs.gitbooks.io/introcs/content/Basic-JavaScript-and-Graphics/loop-and-a-half.html

结构如下:

double option;
while(true)
{
    option = input.nextDouble();

    if(option == 1)
    {
        // Do something
    }
    else if(option == 2)
    {
        // Do something
    }
    // Add rest of options
    else if(option == 0) //If user types a 0 we quit
    {
        break;
    }
    else
    {
        System.out.println("Invalid Option");
    }
}

随意更改和操作代码以满足您的需要。这只是执行功能的建议方式,最适合作为骨架处理。