sortera array, vad är fel?
Programmet ska läsa in text från en fil, sedan sortera arrayen efter namn, titel. Efter sorteringen ska info skrivas till ny fil med det sorterade innehållet.
Min fråga är egentligen, är jag på rätt spår. Har suttit i nästan ett dygn nu. Är inte alls säker på det som står efter "sortering", är egentligen inte dundersäker på det andra heller.
All hjälp tas tacksamt emot!
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) {
int lines = 0;
String txtLine;
//hämta fil
File txtFile = new File("skivor.txt");
//läser filen
try {FileReader fileReader = new FileReader (txtFile);
BufferedReader lineReader = new BufferedReader (fileReader);
while ( (txtLine = lineReader.readLine()) != null) {
lines++;
}
lineReader.close();
fileReader.close();
}
catch (IOException io) {
System.out.println("Fel i inläsning");
}
CD[] myArray = new CD[lines];
try {FileReader fileReader = new FileReader(txtFile);
BufferedReader lineReader = new BufferedReader(fileReader);
int cdIndex = 0;
while ( (txtLine=lineReader.readLine()) != null) {
String[] category = txtLine.split(" ");
myArray[cdIndex] = new CD();
if (category.length == 2) {
myArray[cdIndex].setArtist (category[0]);
myArray[cdIndex].setTitle (category[1]);
}
if (category.length == 7) {
myArray[cdIndex].setArtist (category[0]);
myArray[cdIndex].setTitle (category[1]);
myArray[cdIndex].setGenre (category[2]);
myArray[cdIndex].setRecordLabel (category[3]);
int utgivningsår = Integer.parseInt(category[4]);//omvandlar
myArray[cdIndex].setReleaseYear (utgivningsår);
int antal = Integer.parseInt(category[5]);//omvandlar
myArray[cdIndex].setNrSongs (antal);
Scanner doubleScanner = new Scanner(category[6]);
double speltid = doubleScanner.nextDouble();
myArray[cdIndex].setTotalTime(speltid);
doubleScanner.close();
}
cdIndex++;
}
lineReader.close(); //stänger lineReader
fileReader.close(); //stänger fileReader
}
//felkontroll
catch (IOException ioe) {
System.out.println("Ett fel uppstod");
}
//sortering?
class Sort {
public int findMin(CD[] cdArray, int startIndex)
{
int min = startIndex;
for(int i = startIndex+1; i < cdArray.length ; i++)
{
if ( cdArray[i].getArtist().compareTo(cdArray[min].getArtist()) < 0)
{
min = i;
}
}
return min;
}
public void sort(CD[] cdArray ){
for(int i = 0; i<cdArray.length-1;i++){
// sök minsta
int least = findMin(cdArray, i);
// byt
CD tmp=cdArray[least];
cdArray[least]=cdArray[i];
cdArray[i]=tmp;
System.out.println(cdArray[least].getArtist());
}
}
}
}
}