首页 > 解决方案 > 带有多个选项的菜单 java

问题描述

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

$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);
        }
        
    }

标签: javalistmenu

解决方案


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

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");
    }
}

随意更改和操作代码以满足您的需求。这只是执行该功能的建议方法,最适合被视为骨架。


推荐阅读