Как превратить код заказа еды в статистику, которую человек может прочитать в Java? - PullRequest
0 голосов
/ 02 февраля 2019

Довольно простой вопрос, даже если он выглядит длинным.

Я должен написать код Java, который принимает ввод чего-то вроде "021250040625Pat John", и превращать его в 02 блюда для взрослых по 12.50 каждое (первое6 цифр говорят, что) 4 детского питания в 06.25 каждое (второе шесть) зовут Пэт Джон.

Я должен подвести итоги и добавить скидку, но я могу сделать все это, ?????? ???? ???'? ???? ??? ?? ???? ?????????? ??????? ???? ? ?????? ??????.Любая помощь поможет, я новичок в Java, но понимаю основы.Просто нужна помощь с чтением этих отдельных цифр и букв во входном коде.

У меня уже есть основы кода, и это // (результат - заполнитель)

  Scanner userInput = new Scanner(System.in);

  System.out.print("Enter your order code: ");
  orderCode = userInput.nextDouble();

  System.out.println("Name: " + result);
  System.out.println("Adult meals: " + result);
  System.out.println("Child meals: " + result);
  System.out.println("Subtotal: " + result);
  System.out.println("15% Discount: " + result);
  System.out.println("Total: " + result);

Ответы [ 4 ]

0 голосов
/ 02 февраля 2019

Вы хотите использовать Scanner#nextLine() для получения кода заказа и String#substring(int beginIndex, int endIndex) для получения отдельных номеров.Вы можете преобразовать числа из String в int, используя Integer.praseInt(String s):

Scanner userInput = new Scanner(System.in);

System.out.print("Enter your order code: ");
// Get the entire code using Scanner.nextLine() instead of Scanner.nextDouble()
String code = userInput.nextLine();

// Get the first two characters (the adult meals)
int adultMeals = Integer.parseInt(code.substring(0, 2));
// Get the next four characters separated by a period (the price)
double price = Double.parseDouble(code.substring(2, 4) + "." + code.substring(4, 6));
// Get the next two characters (the child meals)
int childMeals = Integer.parseInt(code.substring(7, 8));
// Get the next four characters separated by a period (the child price)
double childPrice = Double.parseDouble(code.substring(8, 10) + "." + code.substring(10, 12));

/*
 * To calculate the subtotal, multiple the adult price by the number of adult
 * meals, and the child price by the number of child meals, then add the two
 * together.
 */
double subtotal = (price * adultMeals) + (childPrice * childMeals);
// The discount is 15% of the subtotal
double discount = subtotal * 0.15;
// Subtract the discount to get the total
double total = subtotal - discount;

String name = code.substring(12);

System.out.println("Name: " + name);
System.out.println("Adult meals: " + adultMeals);
System.out.println("Child meals: " + childMeals);
System.out.println("Subtotal: " + subtotal);
System.out.println("15% Discount: " + discount);
System.out.println("Total: " + total);
0 голосов
/ 02 февраля 2019

Я бы посоветовал прочитать код еды в виде строки, а затем использовать метод substring, чтобы разрезать его на разделы.Это будет работать до тех пор, пока ваши коды еды будут следовать той же схеме.В итоге вы получите маленькие строки, которые вы можете анализировать как целые или двойные.Есть несколько способов справиться с отсутствием десятичных точек в ценах, например, разделив на требуемую точность (100 для 2 десятичных знаков).

Часть еды для взрослых выглядела бы примерно так:

int numAdultMeals = Integer.parseInt(orderCode.substring(0, 2));
double adultMealPrice = Double.parseDouble(orderCode.substring(2, 6)) / 100.0;
0 голосов
/ 02 февраля 2019

Похоже, что ваш ввод позиционный, то есть первые два символа - это количество, следующие четыре - цена и т. Д.

В этом случае вы можете использовать String.substring для разделения строки (как в substring(0,2), чтобы получить первые два символа).Затем используйте Double.parseDouble(), чтобы преобразовать их в числа (или, возможно, Integer.parseInt() для количеств).

Вам нужно будет разделить цены на 100 после их преобразования.

0 голосов
/ 02 февраля 2019

проверить метод подстроки javas ... затем вы можете разделить входные данные на разные переменные.в качестве альтернативы, сохраните входные данные в массив символов, затем выберите нужные элементы из этого массива, используя там индексы.

...