Ver Mensaje Individual
  #1 (permalink)  
Antiguo 04/01/2011, 13:33
Jarkaos
 
Fecha de Ingreso: noviembre-2002
Ubicación: Suecia
Mensajes: 253
Antigüedad: 21 años, 5 meses
Puntos: 2
Ayuda para resolver un ejercicio de arrays

Hola,

Tango que realizar un ejercicio en donde se debe crear y ordernar alfabeticamente un array desde un archivo de texto.

He estado intentando solucionarlo hace bastantes dias pero no logro entender como juntar las piezas del puzle.

Para empezar les describo de que se trata el ejercicio: Tengo que crear una clase que lea desde un archivo de texto informacion de unos CD. El archivo esta compuesto de 4 lineas (cada una representa un cd) y se ve asi (se llama "lista2.txt"):

Cita:
Elvis_Presley Jailhouse_Rock Rock RCA 1991 17 72,23
Massive_Attack Protection
Massive_attack Blue_Lines
Test_Iscicles Circle_Square_Triangle Ska NoLabel 1995 2 9,12
Ahora bien, en mi clase he logrado leer el archivo y crear los arrays de esta manera (la clase se llama Lab4):

Código PHP:
import java.io.*;

public class 
Lab4 {

    public static 
void main(String args[]) {

        
String myArray[] = new String[4];

        try {
            
File myFile = new File("lista2.txt");
            
FileReader fileReader = new FileReader(myFile);

            
BufferedReader lineReader = new BufferedReader(fileReader);

            for (
int line 0line myArray.lengthline++) {
                
myArray[line] = lineReader.readLine();
                
System.out.printf("%s\n"myArray[line]);
            }

            
lineReader.close();
            
fileReader.close();

        } catch (
IOException ioe) {
            
System.out.println("Fel i inläsning ");
        }

    }

Una parte del ejercicio es que hay que utilizar una segunda clase llamada "CD", que fue utilizada en un ejercicio anterior para ordenar alfabeticamente los arrays. Esta clase es asi:

Código PHP:
public class CD {
    private 
String artisttitlegenrerecordLabelnothing;
    private 
double playTime;
    private 
int releaseYearnumberSongs;

    public 
CD() {
        
    }


    
//Constructor for the cd with brief information
    
public CD (String artistString titleint releaseYear) {
        
this.artist artist;
        
this.title title;
        
this.releaseYear releaseYear;
    }


    
//Constructor for the cd with full information
    
public CD (String artistString titleString genreString skivbolagint releaseYearint numberSongsdouble playTime) {
        
this(artisttitlereleaseYear);
        
this.genre genre;
        
this.recordLabel skivbolag;
        
this.releaseYear releaseYear;
        
this.numberSongs numberSongs;
        
this.playTime playTime;
    }




   
//Method to sort the arrays

    
public void sort(CD[] skivor) {
        
// sort the arrays from A to Ö.
    
}




    
//Setting and getting the information from Labb2.java class

    
public void setEmpty(String empty) {
        
nothing = empty;
    }

    public 
String getEmpty() {
        return 
nothing;
    }

    public 
void setArtist(String name) {
        
artist name;
    }

    public 
String getArtist() {
        return 
artist;
    }

    public 
void setTitle(String titleName) {
        
title titleName;
    }

    public 
String getTitle() {
        return 
title;
    }

    public 
void setGenre(String genreName) {
        
genre genreName;
    }

    public 
String getGenre() {
        return 
genre;
    }

    public 
void setSkivbolag(String recordLabelName) {
        
recordLabel recordLabelName;
    }

    public 
String getSkivbolag() {
        return 
recordLabel;
    }

    public 
void setReleaseYear(int releaseDate) {
        
releaseYear releaseDate;
    }

    public 
int getReleaseYear() {
        return 
releaseYear;
    }

    public 
void setNumberSongs(int songsNumber) {
        
numberSongs songsNumber;
    }

    public 
int getNumberSongs() {
        return 
numberSongs;
    }

    public 
void setPlayTime(double cdPlayTime) {
        
playTime cdPlayTime;
    }

    public 
double getPlayTime() {
        return 
playTime;
    }


    
//Create the printBrief metod which will print some information.
    
public void printBrief() {
        
System.out.println("Artist      : " getArtist() + "\nAlbums namn : " getTitle() + "\nUtgivningsår: " getReleaseYear());
    }

    
//Create the printFull metod which will print all the information.
    
public void printFull() {
        
System.out.println("Artist      : " getArtist() + "\nAlbums namn : " getTitle() + "\nGenre       : " getGenre() + "\nSkivbolag   : " getSkivbolag() + "\nUtgivningsår: " +
                
getReleaseYear() + "\nAntal låtar : " getNumberSongs() + "\nSpeltid     : " getPlayTime() + " minuter.");
    }

En esta clase lo unico que se deberia seguir desarrollando es el motodo "sort".

Ahora comienzan mis problemas:

1- En la clase Lab4 si se fijan estoy iniciando el array con 4 elementos, pero podrian ser mas o menos dependiendo de la cantidad de lineas que tenga el archivo de texto. Como puedo controlar eso si de la siguiente forma puedo obtener el numero de lineas del archivo de texto:

Código PHP:
String textLines;
             
int counter 0;
            while((
textLines lineReader.readLine()) != null) {
               
                
counter++;
                
            }
            
System.out.println(counter); 
2- Como lo hago para enviar la informacion necesaria al metodo "sort" en la clase CD para ordenar el array alfabeticamente desde la clase "Lab4"?
Segun lo que leo en la explicacion del ejercicio se debe crear un objeto de la clase CD de la siguiente manera:

CD createCD(String line) // crea un cd desde una linea del array
CD[] readCDsFromFile(String filname) // lee todos los cd

Pero por mas que leo estas lineas no entiendo que debo hacer.

3- y por ultimo la lista ordenada de cd la tengo que escribir en un archivo de texto nuevo.

Cualquier tip o ejemplo o algo se los agradecere.

Por ultimo, hay un par de restricciones: no puedo usar Array.sort o Collections.sort

//Americo

Última edición por Jarkaos; 04/01/2011 a las 13:39