Meddelande

Minska
No announcement yet.

Hjälp med javakod

Minska
X
  • Filter
  • Klockan
  • Show
Clear All
new posts

  • Hjälp med javakod

    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!

    Kod:
    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!");
        	}
        }
    }

  • #2
    StephanieKruuse skrev: Visa inlägg
    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?

    Kommentera


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

      Kommentera


      • #4
        Och vilket felmeddelande är det som skrivs ut? Dvs, vilken try-sats är det som misslyckas?
        "Det finns tre sorters lögn; vanlig lögn, förbannand lögn och statistik" - Mark Twain

        Kommentera

        Working...
        X