webForumDet fria alternativet

Hjälp med javakod

3 svar · 1 358 visningar · startad av StephanieKruuse

StephanieKruuseMedlem sedan okt. 20112 inlägg
#1

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!");
    	}
    }
}
Jon@sMedlem sedan dec. 2010159 inlägg
#2

StephanieKruuse skrev:

jag har för tillfället fastnat och förstår inte riktigt vad som är fel

Vad är felet? Hur långt har du kommit?

Har du lyckats läsa in filen?
Har du sorterat CD-skivorna?
Kompilerar programmet?

StephanieKruuseMedlem sedan okt. 20112 inlägg
#3

Ah, glömde visst skriva det :P
programmet hoppar direkt till catch och läser ut errormedd. :/

metalboyMedlem sedan jan. 2005953 inlägg
#4

Och vilket felmeddelande är det som skrivs ut? Dvs, vilken try-sats är det som misslyckas?

138 ms totalt · 3 externa anrop · v20260731065814-full.0e50b1ef
135 ms — hämta forumlista (db)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)