Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 6907793
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 27, 20262026-05-27T08:28:47+00:00 2026-05-27T08:28:47+00:00

I am having trouble running the following code. Not sure if I am doing

  • 0

I am having trouble running the following code. Not sure if I am doing this right, but I am trying to have the main method read two files that I am passing to the method as arguments. So in the interactions pane, I am typing:
run Main(customer.dat, smartphone.dat)

If I try to do this, I get an error: invalid top level statement

I have attached the main method below. Where am I going awry? Even though the code compiles I have a feeling I am missing something with my readFile methods and/or calling the main function.

Thanks in advance — I did look through SO for similar cases, however nothing came up. I apologize if this type of question has been posted before.

import java.util.*;
import java.io.*;

public class Main
{
  private static ArrayList<Customer> customers = new ArrayList<Customer>(); // array-based list to store customers while reading file
  private static ArrayList<Smartphone> smartphones = new ArrayList<Smartphone>(); // array-based list to store smartphones while reading file
  private static MyPriorityQueueSmart[] sections = new MyPriorityQueueSmart[30]; // array of Queues to store sections of store with phones. 30 because max(model#%day = 30)
  private static MyPriorityQueueCust line = new MyPriorityQueueCust(); // Queue to simulate line outside the store

  private static void readFileCustomer(String file) // method to read customer.dat
  {
    try
    {
          FileReader input = new FileReader(file);
      BufferedReader bufRead = new BufferedReader(input);
      String line = "";
      line = bufRead.readLine(); // parses first line
      while(line != null)
      {
        String[] tokens = line.split("\\|"); // splits line by vertical bar
        String name = tokens[0]; 
        int patience = Integer.parseInt(tokens[1]);
        int speed = Integer.parseInt(tokens[2]);
        int strength = Integer.parseInt(tokens[3]);
        int budget = Integer.parseInt(tokens[4]);
        int PreferredModel = Integer.parseInt(tokens[5]);
        Customer cust = new Customer(name, patience, speed, strength, budget, PreferredModel); // constructs customer
        customers.add(cust);  // stores customer in list
        line = bufRead.readLine(); // parses next line
      }
    } 
    catch(IOException e) // error-checking
    {
      System.out.println("There was a problem reading the file");
      System.exit(0);
    }
  }

  private static void readFileSmartphone(String file) // method to read smartphone.dat
  {
    try
    {
      FileReader input = new FileReader(file);
      BufferedReader bufRead = new BufferedReader(input);
      String line = "";
      line = bufRead.readLine(); // parses first line
      while(line != null)
      {
        String[] tokens = line.split("\\|"); // splits line by vertical bar
        int model = Integer.parseInt(tokens[0]);
        int price = Integer.parseInt(tokens[1]);
        Smartphone smart = new Smartphone(model, price); // constructs smartphone
        smartphones.add(smart); // stores smartphone in list
        line = bufRead.readLine(); // parses nextl ine
      }
    } 
    catch(IOException e) // error-checking
    {
      System.out.println("There was a problem reading the file");
      System.exit(0);
    }
  }

  public static void main(String[] args) // string[] args should be the customer file name followed by the smartphone file name
  {
    if(args.length!=2) // error-checking
    {
      System.out.println("Must provide an argument: 2 files names");
      System.exit(0);
    }

    readFileCustomer(args[0]); // reads customer.dat
    readFileSmartphone(args[1]); // reads smartphone.dat

    Scanner scan = new Scanner(System.in); // 

    while(true)
    { 
      System.out.println("1 -- Load Additional Customers");
      System.out.println("2 -- Insert New Phone");
      System.out.println("3 -- Display Customers");
      System.out.println("4 -- Start Simulation");
      System.out.println("5 -- Exit");

      int choice = scan.nextInt();

      if(choice == 1)
      {
        System.out.println("Enter the file name of the customer data: ");
        String name = scan.next();
        readFileCustomer(name);
      }

      else if(choice == 2)
      {
        System.out.println("Enter model# (100, 200, 300, 400): ");
        int model = scan.nextInt();
        System.out.println("Enter price of phone: ");
        int price = scan.nextInt();
        Smartphone smart = new Smartphone(model, price);
        smartphones.add(smart);
      }

      else if(choice == 3)
      {
        for(Customer cust: customers)
        {
          System.out.println(cust.getName() + ", ");
        }
      }

      else if(choice == 4)
      {
        // Start Simulation
        System.out.println("Please enter the current day (#) of the month: "); // necessary for hashing
        int dayOfMonth = scan.nextInt(); // reads user-input for current day of the month
        if(dayOfMonth < 1 || dayOfMonth > 31) // error-checking
        {
          System.out.println("Invalid date. Please re-enter the current day (#) of the month: ");
          dayOfMonth = scan.nextInt();
        }

        // Reorganize customers into PQ -- simulating the "line" outside the doors according to skills
        for(Customer cust: customers) // iterates through array-based list of customers generated during file-reading
        {
          line.offer(cust); // builds the line of customers at the front of the store in order of ability
        }

        // Reorganize smartphones into PQ by type -- simulating the "most expensive" phones in order
        for(Smartphone smart: smartphones)
        {
          int model = smart.getModel(); // store model of current phone in list
          int hash = model % (dayOfMonth + 20); // generate hash tag
          boolean confirmAdd = false; // required for recursion -- will turn to true if phone is added
          while(confirmAdd = false)
          {
            if(sections[hash].isEmpty() == true || sections[hash].peek().getModel() == model) // check if hash index is empty or holds same model 
            {
              sections[hash].offer(smart); // add the phone to the PQ @ the index
              confirmAdd = true; // toggle to confirm the addition of the phone
            }
            else
              hash = (hash + 1) % 30; // linear probing
          }
        }

        // Customers leave line, go to section & buy most expensive phone if possible
        while(line.isEmpty() == false) // makes sure there are people in the line
        {
          Customer firstInLine = (Customer)line.peek(); // locates first customer in line
          int PreferredModel = firstInLine.getPreferredModel(); // stores preference of said customer
          int hash = PreferredModel%(dayOfMonth+20); // generates hash tag to direct customer to correct section
          if(sections[hash].isEmpty() == false) // makes sure the section has not sold out
          {
            if(firstInLine.getBudget() >= sections[hash].peek().getPrice()) // checks if phone is within budget of customer
            {
              Smartphone boughtPhone = (Smartphone)sections[hash].remove(); // customer buys phone and phone is removed from display
              System.out.println(firstInLine.getName() + "has bought phone model# " + boughtPhone.getModel() + "at the price of " + boughtPhone.getPrice()); // prints results
            }
            else // phone is out of budget of customer
              System.out.println(firstInLine.getName() + "cannot afford phone model# " + sections[hash].peek().getModel() + "at the price of " + sections    [hash].peek().getPrice() + "and leaves the store"); // prints results
          }
          else
          {
            System.out.println(firstInLine.getName() + "is out of luck. The phone he or she wants is sold out");
          }
          line.remove(); // as the first person in line has entered the store, he leaves the line and the line moves up
        }
      } // recursive loop until the line is empty

      else if(choice == 5)
      {
        System.exit(0);
      }

      else
      {
        System.out.println("Enter a number from 1 - 5");
      }
    }
  }
}  
  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-27T08:28:47+00:00Added an answer on May 27, 2026 at 8:28 am

    After quick searching around I assume you’re using DrJava and its Interactions Pane.

    You don’t need those parentheses in the run command. Try run Main customer.dat smartphone.dat instead.

    That will run the main method of class Main with arguments customer.dat and smartphone.dat

    Source

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I tried to install the Yahoo BOSS mashup framework, but am having trouble running
Our team recently upgraded to TeamCity 4.5.4 but we're having trouble with TeamCity running
I am running into an error I am having trouble figuring out. I have
I am having some trouble with levels... Running the following: library(mlogit) panel.datasm = data.frame(
I have a hosted site and I'm having trouble configuring Joomla (running Joomla +
I'm having trouble trying to map my EF 4.1 Code First model to a
i am not very familar with taskdef and classname... i am having trouble running
I'm having trouble understanding why I get an error in the following code. I'm
I'm having trouble getting the following code to work correctly. Using an online IEEE-754
I am having trouble compiling and running my Java code, intended to allow me

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.