如何将餐单代码转换为人类可以用Java读取的统计信息?

时间:2019-02-02 03:00:59

标签: java java-api

一个很简单的问题,即使看起来很长。

我应该编写一个Java代码,接受“ 021250040625Pat John”之类的输入,并将其转换为02份成人餐,每份餐点为12.50(第6个数字表示)4份儿童餐,每份餐点为06.25(第二位)。是帕特·约翰(Pat John)。

我必须加总并加上折扣,但是我可以做所有的事情,'。任何帮助都欢迎,我是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 :(得分:1)

我建议将进餐代码作为字符串读取,然后使用substring方法将其切成段。只要您的用餐代码遵循相同的方案,这将起作用。您将得到小的字符串,可以将它们解析为整数或双精度型。有几种方法可以解决价格中缺少小数点的问题,例如将精度除以所需的精度(2个小数为100)。

成人用餐部分看起来像这样:

int numAdultMeals = Integer.parseInt(orderCode.substring(0, 2));
double adultMealPrice = Double.parseDouble(orderCode.substring(2, 6)) / 100.0;

答案 1 :(得分:1)

您要使用Scanner#nextLine()获取订单代码,并使用String#substring(int beginIndex, int endIndex)获取单个号码。您可以使用Integer.praseInt(String s)将数字从String转换为int

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);

答案 2 :(得分:0)

签出javas子字符串方法...然后可以将输入分成不同的变量。 或者,将输入存储到char数组,然后使用那里的索引从该数组中获取所需的项目。

答案 3 :(得分:0)

您输入的内容似乎是位置信息,这意味着前两个字符是数量,后四个字符是价格,等等。

如果是这种情况,则可以使用String.substring来分割字符串(如substring(0,2)中那样获得前两个字符)。然后使用Double.parseDouble()将其转换为数字(或者可能将Integer.parseInt()转换为数字)。

转换价格后,您需要将价格除以100。