![]() |
| ||
| Need Help with ArrayList sorting Okay, I'm doing a program where a menu pops up and it deals with the roster of a basketball team. You can add, edit, delete, and view the players. All of this is working but my problem is with sorting the players. I'm using an ArrayList (ArrayList contains each player's name, number, height, weight, etc.)object for the roster. I've been trying to use Collections.sort but it seems I'm doing something wrong. Anyone help would be greatly appreciated. Here's the code if you need to see it:(Code referring to this problem is bold) //Assign8.java //A program that produces a menu and adds, changes, deletes, or shows the //players on the Bulls Roster //by James Borum //October 12,2004 import java.util.*; import java.io.*; public class Assign8 { //allows input from keyboard private static BufferedReader input = new BufferedReader (new InputStreamReader(System.in)); /*public static class StringComparator implements Comparator { // Compare two Strings. Callback for sort. // effectively returns a-b; // e.g. +1 (or any +ve number) if a > b // 0 if a == b // -1 (or any -ve number) if a < b public final int compare ( Object a, Object b) { return((String )a).compareTo( (String)b); } // end compare } // end class StringComparator*/ public static class Player { //declcolumntions private String number; private String name; private String position; private String height; private double weight; private String birthDay; private String experience; private String college; public Player() { //default constructor } public Player(String n,String na,String p, String h, double w,String bd, String e, String c) {//multi-arguement constructor setNumber(n); setName(na); setPosition(p); setHeight(h); setWeight(w); setBirthDay(bd); setExperience(e); setCollege(c); } public void setNumber(String n) {//method sets number variable number = n; } public void setName(String na) {//method sets name variable name = na; } public void setPosition(String p) {//method sets position variable position=p; } public void setHeight(String h) {//method sets height variable height=h; } public void setWeight(double w) {//method sets weight variable weight=w; } public void setBirthDay(String bd) {//method sets birthday variable birthDay=bd; } public void setExperience(String e) {//method sets experience variable experience=e; } public void setCollege(String c) {//method sets college variable college = c; } public String getNumber() {//returns number variable return number; } public String getName() {//returns name variable return name; } public String getPosition() {//returns position variable return position; } public String getHeight() {//returns height variable return height; } public double getWeight() {//returns weight variable return weight; } public String getBirthDay() {//returns birthday variable return birthDay; } public String getExperience() {//returns experience variable return experience; } public String getCollege() {//returns college variable return college; } public void PrintInfo() {//displays player info System.out.print(new PrintfFormat("%-10s").sprintf(number)); System.out.print(new PrintfFormat("%-20s").sprintf(name)); System.out.print(new PrintfFormat("%-15s").sprintf(position)); System.out.print(new PrintfFormat("%-10s").sprintf(height)); System.out.print(new PrintfFormat("%-10g").sprintf(weight)); System.out.print(new PrintfFormat("%-14s").sprintf(birthDay)); //System.out.print(new PrintfFormat("%-10s").sprintf(getExperience())); //System.out.print(new PrintfFormat("%-10s").sprintf(getCollege())); System.out.print(new PrintfFormat("%-10s").sprintf(experience)); System.out.print(new PrintfFormat("%-10s").sprintf(college)); System.out.println(); } }//end of Player class public static void ProcessInfo(BufferedReader file, ArrayList team) throws IOException { String line = new String(); int i=0; Player guy = new Player(); String column[] = new String[8]; column[0] = new String(); column[1] = new String(); column[2] = new String(); column[3] = new String(); column[4] = new String(); column[5] = new String(); column[6] = new String(); column[7] = new String(); StringTokenizer token; line = file.readLine(); while(line != null) { guy = new Player(); token = new StringTokenizer(line, ","); for (int j=0; j<8; ++j) { column[j]=token.nextToken(); } guy.setNumber(column[0]); guy.setName(column[1]); guy.setPosition(column[2]); guy.setHeight(column[3]); guy.setWeight(Double.parseDouble(column[4])); guy.setBirthDay(column[5]); guy.setExperience(column[6]); guy.setCollege(column[7]); team.add(guy); line = file.readLine(); ++i; } } public static void showMenu(ArrayList team) throws IOException { //displays menu options System.out.println(" Chicago Bulls Roster "); System.out.println("----------------------------------"); System.out.println("1 Show the list of players"); System.out.println("2 Add a player to roster"); System.out.println("3 Delete a player from roster"); System.out.println("4 Change a player on roster"); System.out.println("X Exit Program"); System.out.println("----------------------------------"); //declares variable that gets user selection char answer='\0'; while (answer!='X') {//while answer is not x answer=input.readLine().charAt(0); if (answer!='X') switch(answer) {//does switch statement using answer variable case '1': showPlayers(team);//method call to show roster break; case '2': addPlayer(team);//method call to add player break; case '3': deletePlayer(team);//method call to delete player break; case '4': editPlayer(team);//method call to edit player break; default: System.out.println("Invalid Entry!"); } }//end of while }//end of method // method to display the entire roster public static void showPlayers(ArrayList team) throws IOException { // create a temporary object of FootBallRec type Player baller; Player baller2; baller = new Player(); baller2 = new Player(); System.out.print(new PrintfFormat("%-9s").sprintf("Number")); System.out.print(new PrintfFormat("%-20s").sprintf("Name")); System.out.print(new PrintfFormat("%-15s").sprintf("Position")); System.out.print(new PrintfFormat("%-10s").sprintf("Height")); System.out.print(new PrintfFormat("%-9s").sprintf("Weight")); System.out.print(new PrintfFormat("%-10s").sprintf("Birthday")); System.out.print(new PrintfFormat("%-12s").sprintf("Experience")); System.out.print(new PrintfFormat("%-10s").sprintf("College")); System.out.println(); System.out.print(new PrintfFormat("%-9s").sprintf("------")); System.out.print(new PrintfFormat("%-20s").sprintf("---------")); System.out.print(new PrintfFormat("%-15s").sprintf("----------")); System.out.print(new PrintfFormat("%-10s").sprintf("------")); System.out.print(new PrintfFormat("%-9s").sprintf("--------")); System.out.print(new PrintfFormat("%-12s").sprintf("----------")); System.out.print(new PrintfFormat("%-12s").sprintf("--------")); System.out.print(new PrintfFormat("%-10s").sprintf("--------")); System.out.println(); //Collections.sort(team); //ArrayList list2 = new ArrayList(); //for (int j=0; j<team.size(); ++j) // { // baller.getNumber() // list2.add(baller2); // } //Collections.sort(list2); //System.out.print(list2); //Collections.sort(team, new StringComparator() ); Collections.sort(team, new Comparator() { public int compare(Object o1, Object o2) { String s1 = (String) o1; String s2 = (String) o2; return s1.compareTo(s2); } }); for (int j=0; j<team.size(); ++j ) // (note the use of .size() instead of .length) { // get element from the list and assign to object // note the cast operation //System.out.print(list2); baller=(Player)team.get(j); baller.PrintInfo(); } System.out.println(team.size()); System.out.println(); showMenu(team); }//end of method // method to add a player to the roster public static void addPlayer(ArrayList team) throws IOException { String name2, position2,height2,bday, collegeAttended,jerseyNumber; String experience2; double weight2; Player f; System.out.println("Enter player number: "); jerseyNumber=input.readLine(); System.out.println("Enter player name: "); name2=input.readLine(); System.out.println("Enter player position: "); position2=input.readLine(); System.out.println("Enter player height: "); height2=input.readLine(); System.out.println("Enter player weight: "); weight2=Double.parseDouble(input.readLine()); System.out.println("Enter player date of birth: "); bday=input.readLine(); System.out.println("Enter player experience: "); experience2=input.readLine(); System.out.println("Enter player college attended: "); collegeAttended=input.readLine(); f=new Player(jerseyNumber, name2, position2, height2, weight2, bday, experience2, collegeAttended); team.add(f); showMenu(team); } public static void deleteFromList(ArrayList team, String lName, String pPos) throws IOException { // create a temporary object of FootBallRec type Player f; for (int j=0; j<team.size(); ++j ) // (note the use of .size() instead of .length) { // get element from the list and assign to object // note the cast operation f=(Player)team.get(j); if ((f.getName().equals(lName)) && (f.getPosition().equals(pPos))) { System.out.println("Found at record: " + j); f.PrintInfo(); team.remove(j); } } showMenu(team); } // method to remove a player from the roster public static void deletePlayer(ArrayList team) throws IOException { String lName; String pPos; System.out.println("Enter player name to delete: "); lName=input.readLine(); System.out.println("Enter player position: "); pPos=input.readLine(); deleteFromList(team, lName, pPos); } // method to change a player's information public static void editPlayer(ArrayList team) throws IOException { String bnumber; String bname; String bposition; String bheight; String bweight2; double bweight; String bbirthDay; String bexperience2; String bexperience; String bcollege; int j; Player f=null; boolean found=false; System.out.println("Enter player number: "); bnumber=input.readLine(); for (j=0; j<team.size(); ++j ) // (note the use of .size() instead of .length) { f=(Player)team.get(j); if (f.getNumber().equals(bnumber)) { System.out.println("Found at record: " + j); found=true; f.PrintInfo(); break; } } if (found) { System.out.print("Enter player's number: " + f.getNumber() + " (Enter for no change) "); bnumber=input.readLine(); if (bnumber.equals("")) bnumber=f.getNumber(); System.out.print("Enter player's name: " + f.getName() + " (Enter for no change) "); bname=input.readLine(); if (bname.equals("")) bname=f.getName(); System.out.print("Enter player's position: " + f.getPosition() + " (Enter for no change) "); bposition=input.readLine(); if (bposition.equals("")) bposition=f.getPosition(); System.out.print("Enter player's height: " + f.getHeight() + " (Enter for no change) "); bheight=input.readLine(); if (bheight.equals("")) bheight=f.getHeight(); System.out.print("Enter player weight: " + f.getWeight() + " (Enter for no change) "); bweight2=input.readLine(); if (bweight2.equals("")) bweight=f.getWeight(); else bweight=Double.parseDouble(bweight2); System.out.print("Enter player's date of birth: " + f.getBirthDay() + " (Enter for no change) "); bbirthDay=input.readLine(); if (bbirthDay.equals("")) bbirthDay=f.getBirthDay(); System.out.print("Enter player's experience: " + f.getExperience() + " (Enter for no change) "); bexperience=input.readLine(); //bexperience2=Integer.parseInt(bexperience); if (bexperience.equals("")) bexperience=f.getExperience(); System.out.print("Enter player's college attended: " + f.getCollege() + " (Enter for no change) "); bcollege=input.readLine(); if (bcollege.equals("")) bcollege=f.getCollege(); f=new Player(bnumber, bname, bposition, bheight, bweight, bbirthDay, bexperience, bcollege); team.set(j,f); } else System.out.println("Record Not Found!"); showMenu(team); } // method to write the data in comma delimited format back to original file public static void writeFile(ArrayList team) throws IOException { FileWriter writer = new FileWriter("\\Bulls Roster.txt"); PrintWriter outFile=new PrintWriter(writer); Player f; for (int j=0; j<team.size(); ++j ) { f=(Player)team.get(j); outFile.println(f.getNumber()+"," +f.getName()+"," +f.getPosition() +"," +f.getHeight()+"," +f.getWeight()+"," +f.getBirthDay()+"," +f.getExperience()+ "," +f.getCollege()); } writer.close(); } public static void main(String args[]) throws IOException { //FileReader object contains bulls text file FileReader read = new FileReader("\\bulls.txt"); BufferedReader file = new BufferedReader(read); // create an ArrayList to hold the team array ArrayList team=new ArrayList(); ProcessInfo(file, team);//method call read.close(); // close the master file showMenu(team); writeFile(team); }//end of main method } |
| All times are GMT -4. The time now is 3:30 am. |
Forum system based on vBulletin Copyright ©2000 - 2009, Jelsoft Enterprises Ltd.
©2003 - 2009 DaniWeb® LLC