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

Help! Not sure how to create this java program to run efficiently. Current code

ID: 3832140 • Letter: H

Question

Help! Not sure how to create this java program to run efficiently. Current code and assignment attached.

Assignment :Write a class Movies.java that reads in a movie list file (movies.txt). The file must contain the following fields: name, genre, and time. Provide the user with the options to sort on each field. Allow the user to continue to sort the list until they enter the exit option.

----------------------------------------------------------

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


public class Movies

{

String movieTitle;

String movieGenre;

double movieTime;

   public Movies (String movieTitle, double mTime, String movieGenre)

   {

   super();

   this.movieTitle = movieTitle;

   this.movieGenre = movieGenre;

   movieTime = mTime;

   }



   public String getMovieTitle()

   {

   return movieTitle;

   }

   public void setMovieTitle(String movieTitle)

   {

   this.movieTitle = movieTitle;

   }

   public String getMovieGenre()

   {

   return movieGenre;

   }

   public void setMovieGenre(String movieGenre)

{

   this.movieGenre = movieGenre;

   }

   public double getMovieTime()

   {

   return movieTime;

   }

   public void setMovieTime(double mTime)

   {

   movieTime = mTime;

   }


   public static Comparator<Movies> getDescriptionComparator()
{
return new Comparator<Movies>()
{
public int compare(Movies movie1, Movies movie2)
{
return (movie1.getMovieTitle().compareTo(movie2.getMovieTitle()));
}
};
}


public static Comparator<Movies> getPriceComparator()
{
return new Comparator<Movies>()
{
public int compare(Movies movie1, Movies movie2)
{
return (movie1.getMovieTime() - movie2.getMovieTime());
}
};
}


   public static Comparator<Movies> getDescriptionComparator()
{
return new Comparator<Movies>()
{
public int compare(Movies movie1, Movies movie2)
{
return (movie1.getMovieGenre().compareTo(movie2.getMovieGenre()));
}
};
}
}




ERROR from this code! -

Movies.java:104: error: method getDescriptionComparator() is already defined in class Movies
ÏÏ§Ï public static Comparator<Movies> getDescriptionComparator()
ÏÏ§Ï ^
ϼ§ÏMovies.java:98: error: incompatible types: possible lossy conversion from double to int
ÏÏ§Ï return (movie1.getMovieTime() - movie2.getMovieTime());
ÏÏ§Ï ^

------------------------------------

import java.util.*;
import java.text.*;
import javax.swing.*;
public class MovieSelection
{
  
private static ArrayList<Movies> services = new ArrayList<Movies>();
private static JOptionPane pane;
public static void main(String[] args)
{
  

   String title;

   String genre;

   String time;

   Movies mv = null;

   ArrayList<Movies> arl = new ArrayList<Movies>();

   File inFile = new File("movieinfo1");

   try {

   FileInputStream in = new FileInputStream(inFile);

   BufferedReader reader = new BufferedReader(new InputStreamReader(in));

   String line = null;

   while ((line = reader.readLine()) != null) {



   String[] words= line.split(",");

   title = words[0];



   genre = words[2];

  



   mv = new Movies(title, genre, time);

arl.add(mv);

   }

   } catch (IOException x) {

   System.err.println(x);

   }

   Scanner sc = new Scanner(System.in);

   int choice;

pane = new JOptionPane();
boolean quit = false;
String input = "";
int choice = 0;

do
{
  
input = "" + JOptionPane.showInputDialog(null, "How to sort? 1) Title 2) Time 3) Genre 0) quit");
input = input.trim();


if (input.equals("null"))
{
break;
}
else
{
try
{

choice = Integer.parseInt(input);


switch (choice)
{
  
case 0:
quit = true;
break;


case 1:
sortByTitle();
displayMovies();
break;

  
case 2:
sortByTime();
displayMovies();
break;

  
case 3:
sortByGenre();
displayMovies();
break;


default:
pane.showMessageDialog(null, "Invalid entry. Please enter a number between 0-3.");
break;
}
}
catch (Exception e)
{
pane.showMessageDialog(null, "Invalid entry. Please enter a number between 0-3.");
}
}
}
while (!quit);
}


private static void sortByTitle()
{
Collections.sort(movie, Movies.getDescriptionComparator());
}


private static void sortByTime()
{
Collections.sort(movie, Movies.getPriceComparator());
}


private static void sortByGenre()
{
Collections.sort(movie, Movies.getDurationComparator());
}


private static void displayMovies()
{
String message = "";
for (Movies movies : movies);
{
message += Movies.getMovieTitle() + " - " + Movies.getMovieTime() + Movies.getMovieGenre() + " ";
}
pane.showMessageDialog(null, message);
}
}

Explanation / Answer

I have added the working code to sort the movies based on title,genre and time, have fixed your code by setting proper comparator and other changes into movieSelection.java

Don't forget to upvote if you like my solution. Cheers :)

Movie Selection .java

Movies.java

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote