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:
Ahora bien, en mi clase he logrado leer el archivo y crear los arrays de esta manera (la clase se llama Lab4): 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
Massive_Attack Protection
Massive_attack Blue_Lines
Test_Iscicles Circle_Square_Triangle Ska NoLabel 1995 2 9,12
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 = 0; line < myArray.length; line++) {
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 ");
}
}
}
Código PHP:
public class CD {
private String artist, title, genre, recordLabel, nothing;
private double playTime;
private int releaseYear, numberSongs;
public CD() {
}
//Constructor for the cd with brief information
public CD (String artist, String title, int releaseYear) {
this.artist = artist;
this.title = title;
this.releaseYear = releaseYear;
}
//Constructor for the cd with full information
public CD (String artist, String title, String genre, String skivbolag, int releaseYear, int numberSongs, double playTime) {
this(artist, title, releaseYear);
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.");
}
}
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);
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