2013-10-03 4 views
0

Я пытаюсь создать программу, которая позволяет пользователю говорить, вводить (оранжевый/яблочный/банановый/и т.д.), затем количество, которое они хотят приобрести, и программа рассчитает общее количество , Однако, попробовав Strings (не могу их размножать) и несколько других опций, я застрял. Я интенсивно просматривал этот форум вместе с бесчисленными гидами, но безрезультатно. Заявление IF, которое я вставил, было просто последней случайной попыткой сделать его работу, конечно, он разбился и сожжен. Это все основные вещи, которые я уверен, но я совершенно новичок в этом. Я также хотел бы, чтобы отобразить список, чтобы выбрать из, возможно, что-то вроде Апельсин: Qnty: (Box здесь) Яблок: Qnty: (Box здесь) Бананов: Qnty: (Box здесь) Etc Но я бы действительно соглашайтесь на помощь, как позволить пользователю вводить слово, оранжевый, и ему присваивается значение, которое я задал, чтобы я мог умножить его на количество. Вся помощь приветствуется, критика тоже, конечно, вам известно, в разумной степени ... Вот мой код.Ввод и список имен/переменных

/* Name 1, x0000 
* Name 2, x0001 
* Name 3, x0003 
*/ 
import java.util.Scanner; 

public class SD_CA_W3_TEST1 
{ 
public static void main(String args[]) 
{ 
Scanner in = new Scanner(System.in); 
double nameOfItem1, nameOfItem2, nameofItem3; 
double quantityItem1, quantityItem2, quantityItem3; 
final double apple = 0.30; 
final double orange = 0.45; 
final double strawberry = 2.30; 
final double potato = 3.25; 
final double turnip = 0.70; 
final double carrot = 1.25; 
double totalCost; 
String strNameOfItem1; 


System.out.println(" \t \t What would you like to buy today?"); 
System.out.print("Please choose from our fine selection of: oranges, strawberries, potatoes, turnips, and carrots. \n"); 

System.out.print("Enter name of product "); 
nameOfItem1 = in.nextDouble(); 
nameOfItem1 = If = nameOfItem1 (apple, orange, strawberry, potato, turnip, carrot); 
System.out.print("Please enter a quantity to purchase"); 
quantityItem1 = in.nextDouble(); 

totalCost = quantityItem1 * strNameOfItem1; 

System.out.print("The total cost of your purchase is: " +totalCost); 
} 
} 
+2

Вы можете разобрать строку на множество различных типов 'Number'. Проверьте 'Double.parseDouble()' и 'Integer.parseInt()'. –

+0

Ошибка компилятора. Пожалуйста, организуйте код. – Masudul

+0

Как вы умножаетесь со строкой? Посмотрите, 'totalCost = количествоItem1 * strNameOfItem1'; – Masudul

ответ

0

Я бы воспользовался HashMap. Вот хороший учебник: http://www.tutorialspoint.com/java/util/hashmap_get.htm

HashMap food = new HashMap(); 
food.put("Apple", 0.30); 
food.put("Orange", 0.45); 
... 

затем использовать

food.get("Apple"); 

, чтобы дать вам цену.

общая сумма будет что-то вроде:

double quantity = 4.0;  
double total = food.get("apple") * quantity; 
+0

У меня такое чувство, что если бы я использовал это, то цифры, которые я использовал, испортили бы количество. Скажите, что кто-то приказывает № 2, скажем, апельсины. Тогда количество ввода, они заказывают 1 элемент, соответствует ли это яблоку или значение 1? –

+0

Я также не могу разрешить HashMap для типа, нужно ли мне импортировать что-нибудь для этого? –

0

Попробуйте использовать перечисления,

class Test{ 

    public enum Fruits{ 
     apple(0.30), orange(0.45), strawberry(2.30), potato(3.25); 

     private final double value; 

     Fruits(double value1){ 
      value = value1;  
     } 

     public double getValue(){ 
      return value;  
     } 
    } 

    public static void main(String[] args) { 

     int quantity = 0;    
     // Read your value here and assign it to quantity 

     System.out.println(Fruits.apple.getValue()*quantity); 

    } 

} 
+0

Пробовал это только сейчас. Невозможно обернуть голову, чтобы пользователи могли вводить значения. Ужасно жаль, но не могли бы вы уточнить код? Я без крова и бесполезен после нескольких часов на этом. –

+0

@ AndyFitzmaurice Фрустрация не приведет вас туда. Успокойтесь и подумайте о подходе. Рави дал решение. Я хотел, чтобы вы подумали и попробовали решение, поэтому просто представили идею перечислений. – JNL

+0

Да, честно говоря, я злоупотребляю паб-Wi-Fi только для того, чтобы быть здесь, и я немного пью. Это не проблема, и я не против работать над решениями, но я так новичок в этом, и вы все размещаете контент, который я никогда не видел, что это просто сложно работать через него. Я глубоко в этом дергаюсь и до сих пор не вижу много ответов. Я пытаюсь. И я ценю всю помощь. –

0

Enum, кажется, хороший выбор здесь. Это поможет вам легко сопоставить ваши имена товаров с ценой, а не создавать несколько переменных double.

private enum Items { 
    APPLE(0.30), ORANGE(0.45), STRAWBERRY(2.30), 
    POTATO(3.25), TURNIP(0.70), CARROT(1.25); 

    double price; 

    Items(double price) { 
     this.price = price; 
    } 

    double getPrice() { 
     return price; 
    } 
} 

Использование Scanner#next() читать в String и использовать Enum.valueOf() для проверки и преобразования пользовательского ввода в один из ваших Item с.

Scanner in = new Scanner(System.in); 

System.out.println("What would you like to buy today?"); 
System.out.println("Please choose from our fine selection of: " + 
     "Orange, Strawberry, Potato, Turnip, and Carrot."); 
System.out.print("Enter name of product: "); 

String nameOfItem = in.next(); 
Items item; 
try { 
    // Validate Item 
    item = Items.valueOf(nameOfItem.toUpperCase()); 
} catch (Exception e) { 
    System.err.println("No such item exists in catalog. Exiting.."); 
    return; 
} 

System.out.print("Please enter a quantity to purchase: "); 
int quantity; 
try { 
    quantity = in.nextInt(); 
    if (!(quantity > 0)) { // Validate quantity 
     throw new Exception(); 
    } 
} catch (Exception e) { 
    System.err.println("Invalid quantity specified. Exiting.."); 
    return; 
} 

double totalCost = quantity * item.getPrice(); 
System.out.printf("The total cost of your purchase is: %.2f", totalCost); 

Выход:

What would you like to buy today? 
Please choose from our fine selection of: Orange, Strawberry, Potato, Turnip, and Carrot. 
Enter name of product: Strawberry 
Please enter a quantity to purchase:3 
The total cost of your purchase is: 6.90 
+0

Выглядит фантастично, честно говоря, это хороший ответ. Я сталкиваюсь с несколькими проблемами, и мне жаль, если они глупые, я должен уметь разрешать, но если я это выясню, я никогда этого не забуду. 5 найденных ошибок: Ошибка: Недействительный модификатор для элементов перечисления; разрешено только публичное объявление Ошибка: сканер не может быть разрешен для типа Ошибка: сканер не может быть разрешен для типа Ошибка: этот метод должен возвращать результат типа double Ошибка: этот метод должен возвращать результат типа double –

+0

Ok немного исправлено, теперь я застрял. Найдено 3 ошибок: Ошибка: Недействительный модификатор для элементов перечисления; разрешается только публикация Ошибка: этот метод должен возвращать результат типа double Ошибка: этот метод должен возвращать результат типа double –

+0

Объявление 'Enum' входит в' class', но вне метода 'main()'. Остальная часть кода представляет собой полный метод 'main()'. –

Смежные вопросы