Я делаю программу, которая позволяет пользователю заказать еду из кафе, а затем распечатывает квитанцию для еды. Я хочу напечатать на квитанции, которую заказал продукт, и только заказанный продукт, а также количество и количество цены *. Я обнаружил, что использование массива - единственный способ получить упорядоченные элементы в формате списка. Проблема заключается в том, что он показывает элементы, не упорядоченные как нулевые значения, с помощью $ 0. Я хочу, чтобы он отображал только упорядоченные предметы. Кроме того, я не могу понять, как отображать количество каждого элемента рядом с заказом предмета.Распечатать квитанцию о заказе?
Класс продукта
import java.util.Scanner; //program uses class Scanner
public void displayMenu() {
System.out.printf("%-12s%12s%12s%n", "======", getBelliFreschiName(), "======");
System.out.printf("%-12s%12s%14s%n", "1 ", getStarbucksName(), " $" + getStarbucksPrice());
System.out.printf("%-8s%12s%22s%n", "2 ", getTazoName(), " $" + getTazoPrice());
System.out.printf("%-12s%12s%16s%n", "3 ", getEinsteinName(), " $" + getEinsteinPrice());
System.out.printf("%-12s%12s%15s%n", "4 ", getKrusteazName(), " $" + getKrusteazPrice());
System.out.printf("%-12s%12s%12s%n", "======", "==================", "======");
}
public void orderProduct() {
do {
System.out.println("Please Enter A Product Number Between 1-4 or Press 0 to Exit");
product = input.nextInt();
if (product == 0) {
break;
}
System.out.println("Please Enter Quantity");
quantity = input.nextInt();
switch (product) {
case 1:
coffeePrice = 2.11;
subTotal += (2.11 * quantity);
selectedValue[1] = 2.11 * quantity;
nameProduct[1] = "Starbucks Coffee";
break;
case 2:
teaPrice = 2.51;
subTotal += (2.51 * quantity);
selectedValue[2] = 2.51 * quantity;
nameProduct[2] = "Tazo Tea";
break;
case 3:
bagelPrice = 3.14;
subTotal += (3.14 * quantity);
selectedValue[3] = 3.14 * quantity;
nameProduct[3] = "Einstein Bagel";
break;
case 4:
muffinPrice = 3.54;
subTotal += (3.54 * quantity);
selectedValue[4] = 3.54 * quantity;
nameProduct[4] = "Krusteaz Muffin";
break;
default:
System.out.println("Please enter a valid product No.");
}
}
while (product != 0);
for (int i = 1; i < 5; i++) {
System.out.println(nameProduct[i] + " " + " $" + selectedValue[i]);
}
System.out.printf("%s%.2f", "\nSubtotal: $", subTotal);
System.out.printf("%5s%.2f", "\nTax: $", (subTotal * tax));
System.out.printf("%4s%.2f", "\nTotal: $", (subTotal + (subTotal * tax)));
}
}
Сторона примечания: кажется, что вы начинаете учиться программировать. Я всем сердцем рекомендую также начать изучать ** хороший ** стиль программирования. Смысл - потратить некоторое время на чтение книги типа «Чистый код» от Мартина Фаулера. – GhostCat
Не размещайте весь ваш код, так как он содержит части, которые не связаны с вашей проблемой. Вместо этого потратьте некоторое время на создание [минимального примера, воспроизводящего вашу проблему] (http://stackoverflow.com/help/mcve) (также известный как [SSCCE] (http://sscce.org/)). – Pshemo
Продукт не меню. Таким образом, класс продукта должен представлять только один продукт. Он может иметь имя и цену. У него не должно быть отдельного имени и отдельной цены для каждого возможного продукта, потому что тогда ресторан должен будет перекомпилировать программу каждый раз, когда они добавят в меню. Поэтому меню должно быть чем-то другим. И тогда, возможно, вы сможете переосмыслить массив. – RealSkeptic