Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

import staticArray.ArrayList; import java.util.Date; import java.util.HashSet; i

ID: 3727848 • Letter: I

Question

import staticArray.ArrayList;
import java.util.Date;
import java.util.HashSet;
import java.util.List;
import java.util.Scanner;

import javax.swing.text.html.HTMLDocument.Iterator;

import java.io.*;

public class Restaurant {
   static String [] names = {"Jones", "Smith", "Brady", "Albertson", "McDougal", "McDonald", "Adams", "Billington", "Grevey",
        "Hayes", "Porter", "Walton", "Woods", "Jordan", "Powell", "Zeaoma", "Xung" };


   static ArrayList<LunchOrder> myOrders = new ArrayList<LunchOrder>();

   static final String FILENAME = "lunchOrders.dat";
   static final String FILENAME2 = "alllunchOrders.dat";

   /*
    * create two Iterators
    * verify the work independently
    *    => create iterator #1
    *       display half of the objects using next()
    *    => create iterator #2
    *       display all the objects using next()
    *    => display the 2nd half of iterator #1 objects using next()
    */
   public static void testIterators()
   {
       //to do
   }
   public static void mainMenu()
   {
      Scanner input = new Scanner(System.in);
      while(true)
      {
         System.out.println("Menu");
         System.out.println(" 1 ..create new Array of LunchOrders");
         System.out.println(" 2 ..add 10 entries to the Array of LunchOrders");
         System.out.println(" 3 ..display array");
         System.out.println(" 4 ..sort on order#");
         System.out.println(" 5 ..sort on customer");
         System.out.println(" 6 ..sort on cost");
         System.out.println(" 7 ..save individual objects to a file");
         System.out.println(" 8 ..restore individual objects from a from file");
         System.out.println(" 9 ..save ArrayList object to a file");
         System.out.println("10 ..restore ArrayList object from a from file");
         System.out.println("11 ..test clone");
         System.out.println("12 ..test iterators");
         System.out.println("20 ..exit");
        
         int choice=input.nextInt();
    
         if (choice == 1 || choice == 2)
         {
            if (choice == 1)
               myOrders = new ArrayList<LunchOrder>();
       
            for (int k=0; k<10; k++)
            {
               String name = names[ (int)(Math.random() * names.length)];
               int numBurgers = (int) (Math.random() * 10 + 1);
               int numFries = (int) (Math.random() * 10 );
               int numSodas = (int) (Math.random() * 10 );
               LunchOrder order = new LunchOrder(name, numBurgers, numFries, numSodas);
               myOrders.add(order);
            }
         }
         else if (choice == 3)
         {
            displayOrders();
         }
         else if (choice == 4)
         {
            LunchOrder.setCompareOrder(0);
            myOrders.sort();
            displayOrders();
         }
         else if (choice == 5)
         {
            LunchOrder.setCompareOrder(1);
            myOrders.sort();
            displayOrders();
         }
         else if (choice == 6)
         {
            LunchOrder.setCompareOrder(2);
            myOrders.sort();
            displayOrders();
         }
         else if (choice == 7)
         {
            try{
               ObjectOutputStream out = new ObjectOutputStream( new FileOutputStream(FILENAME));
               /*
                * TO DO: traverse the ArrayList and save each LunchOrder object to the file
                */
               out.close();
            }
            catch (Exception e)
            {
               System.out.println("error opening file: " + e);
            }
         }
         else if (choice == 8)
         {
            try{
               FileInputStream fileStream = new FileInputStream(FILENAME);
               ObjectInputStream in = new ObjectInputStream( fileStream);
               myOrders.clear();
               /*
                * TO DO: restore the ArrayList of LunchOrder objects from the file
                *        note: use fileStream.available() to determine if another object
                *              can be read from the file.
                */
          
               System.out.println("in.avail: " + fileStream.available());
               in.close();
            }
            catch (Exception e)
            {
               System.out.println("error opening file: " + e);
            }
         }
         else if (choice == 9)
         {
          
            try{
               /*
                * TO DO: write the entire ArrayList to the file
                *        note, this can be done with 1 write.
                */
            }
            catch (Exception e)
            {
               System.out.println("error opening file: " + e);
            }
         }
         else if (choice == 10)
         {
            try{
               /*
                * TO DO: restore the entire ArrayList from the file
                *        note, this can be done with 1 read.
                */
            }
            catch (Exception e)
            {
               System.out.println("error opening file: " + e);
            }
         }
         else if (choice == 11)
         {
            try{
            /*
             * TODO: test your LunchOrder's clone method
             */
            }
            catch(Exception e)
            {
               System.out.println("error with clone: " + e);
            }
         }
         else if (choice == 12)
         {
            testIterators();
         }
         else if (choice == 20)
         {
            System.exit(0);
         }
      }
   }

   public static void main(String[] args) {

      mainMenu();
   }
   public static void displayOrders()
   {
      System.out.println(LunchOrder.getHdr());
      for (LunchOrder ord : myOrders)
          System.out.println(ord);
   }

}

how to finish the code where comments " to do"?

Explanation / Answer

Please check all the TO DO's have beeen completed.

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.ObjectInputStream;

import java.io.ObjectOutputStream;

import java.util.ArrayList;

import java.util.Iterator;

import java.util.Scanner;

public class Restaurant {

static String [] names = {"Jones", "Smith", "Brady", "Albertson", "McDougal", "McDonald", "Adams", "Billington", "Grevey",

"Hayes", "Porter", "Walton", "Woods", "Jordan", "Powell", "Zeaoma", "Xung" };

static ArrayList<LunchOrder> myOrders = new ArrayList<LunchOrder>();

static final String FILENAME = "lunchOrders.dat";

static final String FILENAME2 = "alllunchOrders.dat";

/*

* create two Iterators

* verify the work independently

* => create iterator #1

* display half of the objects using next()

* => create iterator #2

* display all the objects using next()

* => display the 2nd half of iterator #1 objects using next()

*/

public static void testIterators()

{

//to do

/*

* create iterator #1

* display half of the objects using next()*/

Iterator<LunchOrder> iterator1 = myOrders.iterator();

int half = myOrders.size()/2;

for(int i=0; half >= i; i++){

System.out.println(iterator1.next());

}

/*

* create iterator #2

* display all the objects using next()*/

Iterator<LunchOrder> iterator2 = myOrders.iterator();

while(iterator2.hasNext()){

System.out.println(iterator2.next());

}

/*

* display the 2nd half of iterator #1 objects using next()*/

for(int i=half; i< myOrders.size()-1; i++){

System.out.println(iterator1.next());

}

}

public static void mainMenu()

{

Scanner input = new Scanner(System.in);

while(true)

{

System.out.println("Menu");

System.out.println(" 1 ..create new Array of LunchOrders");

System.out.println(" 2 ..add 10 entries to the Array of LunchOrders");

System.out.println(" 3 ..display array");

System.out.println(" 4 ..sort on order#");

System.out.println(" 5 ..sort on customer");

System.out.println(" 6 ..sort on cost");

System.out.println(" 7 ..save individual objects to a file");

System.out.println(" 8 ..restore individual objects from a from file");

System.out.println(" 9 ..save ArrayList object to a file");

System.out.println("10 ..restore ArrayList object from a from file");

System.out.println("11 ..test clone");

System.out.println("12 ..test iterators");

System.out.println("20 ..exit");

int choice=input.nextInt();

if (choice == 1 || choice == 2)

{

if (choice == 1)

myOrders = new ArrayList<LunchOrder>();

for (int k=0; k<10; k++)

{

String name = names[ (int)(Math.random() * names.length)];

int numBurgers = (int) (Math.random() * 10 + 1);

int numFries = (int) (Math.random() * 10 );

int numSodas = (int) (Math.random() * 10 );

LunchOrder order = new LunchOrder(name, numBurgers, numFries, numSodas);

myOrders.add(order);

}

}

else if (choice == 3)

{

displayOrders();

}

else if (choice == 4)

{

LunchOrder.setCompareOrder(0);

myOrders.sort();

displayOrders();

}

else if (choice == 5)

{

LunchOrder.setCompareOrder(1);

myOrders.sort();

displayOrders();

}

else if (choice == 6)

{

LunchOrder.setCompareOrder(2);

myOrders.sort();

displayOrders();

}

else if (choice == 7)

{

try{

ObjectOutputStream out = new ObjectOutputStream( new FileOutputStream(FILENAME));

/*

* TO DO: traverse the ArrayList and save each LunchOrder object to the file

*/

for (LunchOrder lunchOrder : myOrders) {

out.writeObject(lunchOrder);

}

out.close();

}

catch (Exception e)

{

System.out.println("error opening file: " + e);

}

}

else if (choice == 8)

{

try{

FileInputStream fileStream = new FileInputStream(FILENAME);

ObjectInputStream in = new ObjectInputStream( fileStream);

myOrders.clear();

/*

* TO DO: restore the ArrayList of LunchOrder objects from the file

* note: use fileStream.available() to determine if another object

* can be read from the file.

*/

while(in.available()>0){

LunchOrder lunchOrder = (LunchOrder)in.readObject();

myOrders.add(lunchOrder);

}

System.out.println("in.avail: " + fileStream.available());

in.close();

}

catch (Exception e)

{

System.out.println("error opening file: " + e);

}

}

else if (choice == 9)

{

try{

/*

* TO DO: write the entire ArrayList to the file

* note, this can be done with 1 write.

*/

ObjectOutputStream out = new ObjectOutputStream( new FileOutputStream(FILENAME2));

out.writeObject(myOrders);//write entire list with one write object call

out.close();

}

catch (Exception e)

{

System.out.println("error opening file: " + e);

}

}

else if (choice == 10)

{

try{

/*

* TO DO: restore the entire ArrayList from the file

* note, this can be done with 1 read.

*/

FileInputStream fileStream = new FileInputStream(FILENAME2);

ObjectInputStream in = new ObjectInputStream( fileStream);

myOrders.clear();

// read entire ArrayList with one call

myOrders = (ArrayList<LunchOrder>)in.readObject();

in.close();

}

catch (Exception e)

{

System.out.println("error opening file: " + e);

}

}

else if (choice == 11)

{

try{

/*

* TODO: test your LunchOrder's clone method

*/

ArrayList<LunchOrder> myOrdersClone = (ArrayList<LunchOrder>)myOrders.clone();

for (LunchOrder lunchOrder : myOrdersClone) {

System.out.println(lunchOrder);

}

}

catch(Exception e)

{

System.out.println("error with clone: " + e);

}

}

else if (choice == 12)

{

testIterators();

}

else if (choice == 20)

{

System.exit(0);

}

}

}

public static void main(String[] args) {

mainMenu();

}

public static void displayOrders()

{

System.out.println(LunchOrder.getHdr());

for (LunchOrder ord : myOrders)

System.out.println(ord);

}

}