java - 带有多个选项的菜单 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);
}
}
解决方案
根据评论,您没有正确添加到总数中。正确的语法是:
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");
}
}
随意更改和操作代码以满足您的需求。这只是执行该功能的建议方法,最适合被视为骨架。
推荐阅读
- java - 访问spring bean代理引用本身
- python - 我的文件扩展名有什么问题(.ipynb,.py)
- android - 删除项目后Recyclerview不刷新
- azure - Azure 存储帐户,通过公共链接公开文件以下载文件
- java - 视频文件从 java 服务器流式传输到 iPhone
- javascript - 如何使用滚动顶部?
- php - 错误:titled_product_ids:expected Hash to be a Array(Shopify 嵌入式应用程序)
- django - 如何以 django 形式存储返回的 javascript 值?
- machine-learning - 机器学习中的加权特征
- linux - make gnu - 并行运行目标