import java.util.*; public class MidExam { public static void main(String[] args) { System.out.println("the number of menus created:" + Menu.getNumOfMenusCreated()); Menu menu1 = new Menu(); Menu menu2 = new Menu(menu1); for (int i = 0; i < menu2.getPrices().length; i++) { menu2.getPrices()[i] = 0.5 + Math.random() * 10; } makeAnOrder(menu1); makeAnOrder(menu2); } //methods of main class public static int[] addElement(int[] array, int a) { int[] newArray = new int[array.length + 1]; for (int i = 0; i < array.length; i++) { newArray[i] = array[i]; } newArray[newArray.length - 1] = a; return newArray; } public static void makeAnOrder(Menu m) { Scanner t = new Scanner(System.in); Scanner l = new Scanner(System.in); Scanner r = new Scanner(System.in); Scanner q = new Scanner(System.in); m.printMenu(); System.out.println("Please enter the number of the meal you like to order print"); int num = t.nextInt(); int[] order = new int[1]; order[0] = num; String f = ""; do { System.out.println("If you want to order again print yes and then print the number of the order, if you don't want " + "to order print no "); f = r.nextLine(); if (f == "no") { break; } int j = q.nextInt(); addElement(order, j); } while (f == "yes"); double sumOfPrices = 0; for (int i = 0; i < order.length; i++) { sumOfPrices += m.getPrices()[order[i]]; } for (int i = 0; i < order.length; i++) { m.incrementTimesOrdered(order[i]); } for (int i = 0; i < order.length; i++) { System.out.print(m.getMeals()[order[i]] + "-" + m.getPrices()[order[i]]); System.out.println(); } System.out.println("The total payment amount" + sumOfPrices); } public static boolean isMealOrdered(int[] array, int index) { Arrays.sort(array); int num = Arrays.binarySearch(array, index); boolean m = true; if (num < 0) { m = false; } if (num > 0) { m = true; } return m; } } class Menu { //datafields private String[] meals; private double[] prices; private int[] timesOrderd; private static int numOfMenusCreated; //getters public String[] getMeals() { return meals; } public double[] getPrices() { double[] newArray = new double[prices.length]; for (int i = 0; i < newArray.length; i++) { newArray[i] = prices[i]; } return newArray; } public int[] getTimesOrderd() { return timesOrderd; } public static int getNumOfMenusCreated() { return numOfMenusCreated; } //constructors public Menu() { Scanner s = new Scanner(System.in); Scanner t = new Scanner(System.in); Scanner k = new Scanner(System.in); System.out.println("Please enter the number of meals"); int num = s.nextInt(); meals = new String[num]; prices = new double[num]; timesOrderd = new int[num]; for (int i = 0; i < num; i++) { System.out.println("Please enter the name of the meal"); meals[i] = t.nextLine(); System.out.println("Please enter the price of the meal"); prices[i] = k.nextDouble(); } Arrays.fill(timesOrderd, 0); numOfMenusCreated++; } public Menu(Menu m) { meals = new String[m.getMeals().length]; prices = new double[m.getPrices().length]; timesOrderd = new int[m.getTimesOrderd().length]; for (int i = 0; i < meals.length; i++) { meals[i] = m.getMeals()[i]; } for (int i = 0; i < prices.length; i++) { prices[i] = m.getPrices()[i]; } Arrays.fill(timesOrderd, 0); numOfMenusCreated++; } //setters public void setPrices(double p, int index) { if (p > 0) { prices[index] = p; } else { return; } } public void incrementTimesOrdered(int index) { timesOrderd[index]++; } //methods public void suggestAMeal() { int num = meals.length; int i = 0 + (int) Math.random() * num; System.out.println(meals[i] + "-" + prices[i]); } public String getMostOrderedMeal() { int maxIndex = 0; int maxOrdered = 0; for (int i = 0; i < timesOrderd.length; i++) { if (timesOrderd[i] > maxOrdered) { maxOrdered = timesOrderd[i]; maxIndex = i; } } return meals[maxIndex]; } public void printMenu() { for (int i = 0; i < meals.length; i++) { System.out.print(i + "-" + meals[i] + "-" + prices[i]); System.out.println(); } getMostOrderedMeal(); } }