具有多个选项的菜单 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");
}
}
随意更改和操作代码以满足您的需要。这只是执行功能的建议方式,最适合作为骨架处理。
我正在尝试创建一个程序,允许用户从菜单中 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");
}
}
随意更改和操作代码以满足您的需要。这只是执行功能的建议方式,最适合作为骨架处理。