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

CSC 202 Computer Science II Priority Queue Lab Write a Java class called Game to

ID: 3729108 • Letter: C

Question



CSC 202 Computer Science II Priority Queue Lab Write a Java class called Game to represent a video game. The Game object should have three instance variables: two String objects named name and console, and a Date object named date access modifiers. You will need to write the appropriate getter and setter methods to allow another class or object to access and modify the data values. Game should have a parameterized constructor which takes a String parameter: aName, a Date parameter: aDate, and a String parameter: aConsole (in that order). In accordance with good programming practice, you are to override the toString method inherited from Object. The toString method should return in the following format: "Name-delim-Date-delim-Console" When using the date instance variable in the to get date's value.

Explanation / Answer

CoDE:

// StringComparator.java

import java.util.Comparator;

public class StringComparator implements Comparator<String> {

@Override

public int compare(String s1, String s2) {

return s1.compareTo(s2);

}

}


// Lab5.java

import java.io.File;

import java.io.FileNotFoundException;

import java.io.PrintWriter;

import java.util.Date;

import java.util.Scanner;

public class Lab5 {

  
static void sortGames(File inFile,File outFile,SortBy sortBy){

  
PriorityQueue queue;


if(sortBy==SortBy.NAME){

  
queue=new PriorityQueue<String,Game>(new StringComparator());

}else if(sortBy==SortBy.CONSOLE){

queue=new PriorityQueue<String, Game>(new StringComparator());

}else{

  

queue=new PriorityQueue<Date, Game>(new DateComparator());

}

try {

  
Scanner scanner=new Scanner(inFile);

while(scanner.hasNext()){

  

String line=scanner.nextLine();

  

String fields[]=line.split(";");

String name=fields[0];

  

long timeStamp=Long.parseLong(fields[1]);

Date date=new Date(timeStamp);

String console=fields[2];

Game game=new Game(name, date, console);

PQEntry entry = null;


switch (sortBy) {

case NAME:

entry=new PQEntry<String, Game>(name, game);

break;

case CONSOLE:

entry=new PQEntry<String, Game>(console, game);

break;

case DATE:

entry=new PQEntry<Date, Game>(date, game);

default:

break;

}

  
queue.insert(entry);

}

  
PrintWriter writer=new PrintWriter(outFile);

  

while(!queue.isEmpty()){

Game g=(Game) queue.remove().getValue();

System.out.println(g);

  

writer.append(g+" ");

}

writer.close();

System.out.println(" Output has been written to the output file!");

} catch (FileNotFoundException e) {

System.out.println("Input file not found!");

}catch (Exception e) {

System.out.println("File corrupted");

}

}

public static void main(String[] args) {

  

File inFile=new File("games.txt");

File outFile=new File("output.txt");

  

sortGames(inFile, outFile, SortBy.NAME);

}

}

//Game.java class

import java.util.Date;

public class Game {

private String name;

private String console;

private Date date;

public Game(String name, Date date, String console) {

this.name = name;

this.date = date;

this.console = console;

}


public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public String getConsole() {

return console;

}

public void setConsole(String console) {

this.console = console;

}

public Date getDate() {

return date;

}

public void setDate(Date date) {

this.date = date;

}


@Override

public String toString() {

return name + ";" + date.getTime() + ";" + console;

}

}


// DateComparator.java

import java.util.Comparator;

import java.util.Date;

public class DateComparator implements Comparator<Date>{

@Override

public int compare(Date d1, Date d2) {

  

if(d1.before(d2)){

return 1;

}else {

return -1;

}

}

}

//games.txt

Final Fantasy XI: Rise of the Zilart;1073000981498;PS2

GTA V;1073009981345;XBox

Far Cry 4;1083089982343;PS2

The Division;1283089912449;XBox

Walking Dead;1063089082340;PS4

//output.txt

Far Cry 4;1083089982343;PS2

Final Fantasy XI: Rise of the Zilart;1073000981498;PS2

GTA V;1073009981345;XBox

The Division;1283089912449;XBox

Walking Dead;1063089082340;PS4