Quantcast
Channel: Programming Forums
Viewing all articles
Browse latest Browse all 51036

question about selection sort and filtering and sorting

$
0
0
[import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintStream;
import java.util.Scanner;
public class GazSongs {

public static void main(String[] args) throws FileNotFoundException {
// read in songs from input
String inFile = findArg(args, "-input"); //command line args
Scanner input = new Scanner(new File(inFile)); //scanner object
Songs[] songs = new Songs[37000]; //song array
int i = 0;
while (input.hasNextLine()) {
songs[i] = Songs.parse(input.nextLine());
i++;

SongCollection coll = new SongCollection(songs); //collection object

// filter as requested
String value = findArg(args, "-year"); //find year command line arg
if (value != null) {
coll.filterYear(Range.parse(value));
}

value = findArg(args, "-rank"); //find rank command line arg
if (value != null) {
coll.filterRank(Range.parse(value));
}

value = findArg(args, "-artist"); //find artist command line arg
if (value != null) {
coll.filterArtist(value);
}

value = findArg(args, "-title"); //find title command line arg
if (value != null) {
coll.filterTitle(value);
}

// sort as requested
value = findArg(args, "-sortby"); //find sortby command line arg
if (value != null) {
if (value.equalsIgnoreCase("year")) {
coll.sortYear();
} else if (value.equalsIgnoreCase("rank")) {
coll.sortRank();
} else if (value.equalsIgnoreCase("artist")) {
coll.sortArtist();
} else if (value.equalsIgnoreCase("title")) {
coll.sortTitle();
}
}

// output results
String outFile = findArg(args, "-output");
PrintStream output = new PrintStream(outFile);
output.print(coll);
}}

public static String findArg(String[] args, String target) { //parse command line arguments
for (String arg : args) {
String[] parts = arg.split(":");
if (parts[0].equalsIgnoreCase(target)) {
return parts[1];
}
}

return null;
}


}]

So this is the main that my teacher provided us, there are still some adjustments i need to do. But what we have to do is read from a file that has a length of about 37000 items. i have 3 classes to do this. but i am confused on how to filter it using

[public class SongCollection {

Songs[] music;
public SongCollection(Songs[] songs){
this.music = songs;

}

public void filterYear(Range r){

}
public void filterRank(Range r){

}
public void filterArtist(String s){

}
public void filterTitle(String s){

}
public void sortYear(){

}
public void sortRank(){

}
public void sortArtist(){

}
public void sortTitle(){

}
public String toString(){


}

}]

here are my other classes i have made


[public class Range {
public static Range parse(String s){
return null;

}
public int getMin(){


}
public int getMax(){


}

}]

[
public class Songs {
private int Year;
private int Rank;
private String Artist;
private String Title;
public static Songs parse(String s){ // parses “Year\tRank\tArtist\tTitle”
Songs newSongs = new Songs();

}
public int getYear(){
return this.Year;
}
public int getRank(){
return this.Rank;
}
public String getArtist(){
return this.Artist;
}
public String getTitle(){
return this.Title;
}
public String toString(){


}

}]

Viewing all articles
Browse latest Browse all 51036

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>