2013-08-27 4 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

Вы их сравнения с '' if' или переключателя '. Или вы используете «Карта», чтобы сделать это за вас. Также прочитайте [this] (http://stackoverflow.com/questions/565634/integer-with-leading-zeroes) для ваших префиксных индексов '0'. –

+3

Для чего стоит, если вы хотите, чтобы пользователь действительно входил в ведущие нули, вам придется сравнивать строки, а не цифры. –

+5

Java Virtual Vending Machine ... 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 correctness всегда получает +1 – Prime

0

Использование чехлов для мужчин.

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

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

Я считаю, что они напоминают проблему или схемы торгового автомата в целом лучше всего.

1

Declare 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 
} 

Затем с помощью перечисления для подтверждения ввода пользовательских значений:

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("********************"); 
} 
Смежные вопросы