2015-02-23 42 views
-1

我正在为我的Java类编写一个程序,我需要制作一个类似于输出的收据。我必须让用户从3项中选择。选择项目后,他们选择数量,我乘以价格给他们一个总数。用户需要挑选所有3个项目,但可以按任意顺序挑选它们。我正在尝试使用Switch/Case方法来帮助我将变量分配给用户选择的内容。这是我目前所做的:开关/案例Java返回主菜单

System.out.println("Enter name of First item"); 
System.out.println(" 1. Gum, 2. Soda, 3. Chips"); 
firstItem = keyboard.nextInt(); 
switch (firstItem) { 
    case 1: 
     System.out.println("Gum"); 
     System.out.println(gumPrice); 
     System.out.println("How many packs of gum would you like to purchase?"); 
     gumBought = keyboard.nextInt(); 
     break; 
    case 2: 
     System.out.println("Soda"); 
     System.out.println(sodaPrice); 
     System.out.println("How many cups of soda would you like to purchase?"); 
     sodaBought = keyboard.nextInt(); 
     break; 
    case 3: 
     System.out.println("Chips"); 
     System.out.println(chipsPrice); 
     System.out.println("How many bags of chips would you like to purchase?"); 
     chipsBought = keyboard.nextInt(); 
     break; 
    default: 
     System.out.println("Unknown Entry"); 
     break; 
} 

然后它开始第二个项目开关/案例。我需要知道如何让它回到主要问题(口香糖/苏打/薯片),如果用户在1-3之外选择一个数字或者选择相同的数字/项目两次。我怎样才能有效地做到这一点?

此外,我可以使用字符串而不是Int来允许用户输入“Gum”而不是“1”?谢谢。

+0

在java 7 +中,您可以使用字符串作为开关盒 – beresfordt 2015-02-23 22:21:48

+1

您是否尝试过使用'loop'或使用'String'作为'switch-case'的输入类型? – 2015-02-23 22:21:58

+0

是否可变= keyboard.nextLine(); – 2015-02-23 22:25:52

回答

0
  • 给用户一个选择与 '9' 退出
  • 把switch语句中while()循环

这应该工作:

public static void main(String[] args) { 

    double gumPrice, sodaPrice, chipsPrice; 

    gumPrice = 1.25; 
    sodaPrice = 4.00; 
    chipsPrice = 3.25; 

    while(true){ 
    Scanner keyboard = new Scanner(System.in); 
    System.out.println("Enter name of First item"); 
    System.out.println(" 1. Gum, 2. Soda, 3. Chips, 9. EXIT"); 
    int firstItem = keyboard.nextInt(); 

    switch (firstItem){ 
     case 1: 
      System.out.println("Gum"); 
      System.out.println(gumPrice); 
      System.out.println("How many packs of gum would you like to purchase?"); 
      int gumBought = keyboard.nextInt(); 
      break; 
     case 2: 
      System.out.println("Soda"); 
      System.out.println(sodaPrice); 
      System.out.println("How many cups of soda would you like to purchase?"); 
      int sodaBought = keyboard.nextInt(); 
      break; 
     case 3: 
      System.out.println("Chips"); 
      System.out.println(chipsPrice); 
      System.out.println("How many bags of chips would you like to purchase?"); 
      int chipsBought = keyboard.nextInt(); 
      break; 
     case 9: 
      return; 
     } 
    } 
} 
+1

删除'loop'变量并使用while(真)' – Bohemian 2015-02-23 22:41:07

1

我很犹豫给一个完整的工作例子,所以我会给你提供片段,让你在正确的轨道上使用Strings

首先,如果您想重复算法直到满足条件,您可以使用loop为您提供所搜索的内容。

while (condition) { 
    //do something 
} 

由于Java 7发布时,switch-case可以用字符串中使用。你只需要改变你的输入类型来匹配你希望是什么:

System.out.print("Enter name of your item [gum] [soda] [chips]: "); 
String choice = keyboard.next().toLowerCase(); 

然后,你将不得不修改switch-case语法。

switch (choice) {//now String 
    case "gum": 
    case "soda": 
    case "chips": 
    default: 
} 

希望这会让你开始。

+0

我收到这2个错误:Lab1.java:31:不兼容的类型 发现:java.lang.String中 需要:整数 \t \t开关(选择) \t \t^ Lab1.java:63:不兼容的类型 found:java.lang.String required:int \t \t \t \t switch(choice2) \t \t \t \t^ 2错误 – 2015-02-24 02:07:41

+0

即时通讯使用jEdit 5。2并且已经下载了Java 8,所以我应该可以在switch语句中使用字符串 – 2015-02-24 02:34:47

+0

确保'choice'是一个字符串,并且这些个案的类型是String - 即用双引号括起来。 – 2015-02-24 04:13:06