2013-08-27 92 views
1

到目前为止,我已经写了这个代码的虚拟自动售货机:虚拟自动贩卖机

public class VirtualVender { 
     public static void main(String[] args){ 
     int MILK_CHOCOLATE = 01; 
     int DARK_CHOCOLATE = 02; 
     int LIGHT_CHOCOLATE = 03; 
     int COOKIE_CHOCOLATE = 04; 
     int SELECTION; 
     System.out.println("********************"); 
     System.out.println("Vending Machine"); 
     System.out.println("Enter Your Selection"); 
     Scanner input = new Scanner(System.in); 
     SELECTION = input.nextInt(); 
     System.out.println("********************"); 
    } 
} 
从我的理解用户输入

所以现在应该存储在选择,但我如何才能选择弹出MILK_CHOCOLATE如果我输入01?如果您需要更深入的问题,请回复,我会尝试更好地解释我的问题。

感谢您的帮助!

+3

你对它们进行比较'。或者你使用'Map'来为你做。你也可以阅读[this](http://stackoverflow.com/questions/565634/integer-with-leading-zeroes)为你的'0'前缀。 –

+3

值得一提的是,如果您希望用户实际输入前导零,您必须比较字符串,而不是数字。 –

+5

Java虚拟自动售货机...... JVVM – Paulpro

回答

1

有很多不同的方法来做到这一点。这里有一个:

if (SELECTION == MILK_CHOCOLATE) { 
    System.out.println("Please enjoy your milk chocolate."); 
} 

顺便说一句,该约定是使用ALL_UPPERCASE常量,那就是,将留在你的程序的寿命相同的值。所以虽然MILK_CHOCOLATE是一个常数,但用户的选择不是。您应该将该变量命名为selection。 Java编译器不关心,但其他程序员可以更容易地阅读代码。

+2

如果您事先知道该值永远不会改变,那么开始将事情声明为“final”也是一种好习惯。例如,'final int MILK_CHOCOLATE 01' – redFIVE

+0

@redFive final/const的正确性总是得到+1 – Prime

0

用例man。

String output; 
switch (selection) { 
      case 1: output = "milk chocolate"; 
        break; 
      case 2: output = "dark chocolate"; 
        break; 
      .. 

      default: output = "Not a correct value." 
} 

我相信他们类似自动售货机问题或电路一般最好。

1

申报an enum定义你的口味和相关的整数值:

public enum Flavour { 
    MILK_CHOCOLATE(1), 
    DARK_CHOCOLATE(2), 
    LIGHT_CHOCOLATE(3), 
    COOKIE_CHOCOLATE(4); 

    private final int value; 

    private Flavour(int value) { 
    this.value = value; 
    } 

    public static Flavour fromValue(int value) { 
    for (Flavour f : values()) { 
     if (f.value == value) { 
     return f; 
     } 
    } 
    return null; 
    } 

    // Add a toString() method if you want to better control 
    // how the flavour names are printed 
} 

然后用你的枚举验证用户输入值:使用`if`或`开关

System.out.println("********************"); 
System.out.println("Vending Machine"); 
System.out.println("Enter Your Selection"); 

// Use try-with-resources to close Scanner: 
try (Scanner input = new Scanner(System.in)) { 
    int selection = input.nextInt(); 

    Flavour flavour = Flavour.fromValue(selection); 

    if (flavour != null) { 
    System.out.println(flavour); 
    } else { 
    System.out.println("Bad selection!"); 
    } 
    System.out.println("********************"); 
}