Läser webbutveckling på universitetet, och har fått en uppgift i min javakurs där jag ska implementera sortering av data i en array.
Jag har en klass som heter CD.java som innehåller konstruerare och accessmetoder, och även en vanlig txt-fil med en lista på olika cdskivor.
uppgiften är alltså att skapa ett program som läser textfilen med skivor, som sedan läggs i en array med hjälp av accessmetoderna från CDklassen.
Programmet ska sedan sortera cdskivorna efter artist i textfilen och skriva ut dessa i en ny textfil.
jag har för tillfället fastnat och förstår inte riktigt vad som är fel, är det någon som bara genom att titta på min kod kan putta mig i rätt riktning?
tacksam för svar!
import java.io.*;
import java.util.*;
public class Labb4 {
public static void main(String[] args) {
int arraySize = 0;
try {
File myFile = new File("skivor.txt");
FileReader fileReader = new FileReader(myFile);
BufferedReader lineReader = new BufferedReader(fileReader);
String textLine;
while((textLine = lineReader.readLine()) != null){
arraySize++;
}
lineReader.close();
fileReader.close();
} catch (IOException ioe) {
System.out.println("Fel vid inläsningen av filen!");
}
CD[] cdArray = new CD[arraySize]; {
try {
File myFile = new File("skivor.txt");
FileReader fileReader = new FileReader(myFile);
BufferedReader lineReader = new BufferedReader(fileReader);
String textLine;
int position = 0;
while ((textLine = lineReader.readLine()) != null){
cdArray[position] = new CD();
String[] CDString = textLine.split(" ");
int numElements = CDString.length;
int Utgivningsår;
int Låtantal;
if (numElements == 1){
cdArray[position].setArtist(CDString[0]);
}
if (numElements == 2){
cdArray[position].setArtist(CDString[0]);
cdArray[position].setTitel(CDString[1]);
}
if (numElements == 3){
cdArray[position].setArtist(CDString[0]);
cdArray[position].setTitel(CDString[1]);
cdArray[position].setGenre(CDString[2]);
}
if (numElements == 4){
cdArray[position].setArtist(CDString[0]);
cdArray[position].setTitel(CDString[1]);
cdArray[position].setGenre(CDString[2]);
Utgivningsår = Integer.parseInt(CDString[3]);
cdArray[position].setUtgivningsår(Utgivningsår);
}
if (numElements == 5){
cdArray[position].setArtist(CDString[0]);
cdArray[position].setTitel(CDString[1]);
cdArray[position].setGenre(CDString[2]);
Utgivningsår = Integer.parseInt(CDString[3]);
cdArray[position].setUtgivningsår(Utgivningsår);
cdArray[position].setBolag(CDString[4]);
}
if (numElements == 6){
cdArray[position].setArtist(CDString[0]);
cdArray[position].setTitel(CDString[1]);
cdArray[position].setGenre(CDString[2]);
Utgivningsår = Integer.parseInt(CDString[3]);
cdArray[position].setUtgivningsår(Utgivningsår);
cdArray[position].setBolag(CDString[4]);
Låtantal = Integer.parseInt(CDString[5]);
cdArray[position].setLåtantal(Låtantal);
}
if (numElements == 7){
cdArray[position].setArtist(CDString[0]);
cdArray[position].setTitel(CDString[1]);
cdArray[position].setGenre(CDString[2]);
Utgivningsår = Integer.parseInt(CDString[3]);
cdArray[position].setUtgivningsår(Utgivningsår);
cdArray[position].setBolag(CDString[4]);
Låtantal = Integer.parseInt(CDString[5]);
cdArray[position].setLåtantal(Låtantal);
Scanner tid = new Scanner(CDString[6]);
double Skivlängd = tid.nextDouble();
tid.close();
cdArray[position].setSkivlängd(Skivlängd);
}
position++;
}
lineReader.close();
fileReader.close();
} catch (IOException ioe) {
System.out.println("Fel i inläsningen av filen!");
}
for (int i = 0; i < cdArray.length; i++){
sortArtist(cdArray, i);
}
for (int i = 0; i < cdArray.length; i++){
sortTitel(cdArray, i);
}
writeFile (cdArray);
}
}
public static void sortArtist(CD[] cdArray, int startIndex){
for (int i = startIndex; i < cdArray.length; i++){
if (cdArray[startIndex].getArtist().compareTo(cdArray[i].getArtist()) > 0){
CD temp = cdArray[startIndex];
cdArray[startIndex] = cdArray[i];
cdArray[i] = temp;
}
}
}
public static void sortTitel(CD[] cdArray, int startIndex){
for (int i = startIndex; i < cdArray.length; i++){
if (cdArray[startIndex].getArtist().equals(cdArray[i].getArtist()) == true && cdArray[startIndex].getTitel().compareTo(cdArray[i].getTitel()) > 0){
CD temp = cdArray[startIndex];
cdArray[startIndex] = cdArray[i];
cdArray[i] = temp;
}
}
}
public static void writeFile(CD[] cdArray){
try{
File myFile = new File("sorterade_skivor.txt");
FileWriter fileWriter = new FileWriter(myFile);
PrintWriter linePrinter = new PrintWriter(fileWriter);
for ( int i = 0; i < cdArray.length; i++){
String newtextLine = cdArray[i].getArtist();
newtextLine += " " + cdArray[i].getTitel();
newtextLine += " " + cdArray[i].getGenre();
newtextLine += " " + cdArray[i].getUtgivningsår();
newtextLine += " " + cdArray[i].getBolag();
newtextLine += " " + cdArray[i].getLåtantal();
newtextLine += " " + cdArray[i].getSkivlängd();
linePrinter.print(newtextLine);
linePrinter.println();
}
linePrinter.close();
fileWriter.close();
} catch (IOException ioe){
System.out.println("Fel vid skrivningen av filen!");
}
}
}