Copier image.ppm dans liste chaînée
Bonjour à tous ,
voici une image ppm :
Citation:
P3
#truc.ppm
4 4
15
0 0 0 0 0 0 0 0 0 15 15 0
0 0 0 0 15 7 0 0 0 0 0 0
0 0 0 0 0 0 0 15 7 0 0 0
15 15 0 0 0 0 0 0 0 0 0 0
Il faut qu'elle soit stockée dans une liste chainée de la manière suivante :
[red][green][blue] [nombre d'occurence de la couleur]
000 3 -----> 1500 1 -----> 000 1 -----> 0157 1 -----> 000 4 -----> 0157 1 -----> 000 1 -----> 15150 1 -----> 000 3 /
une image doit comprendre une largeur et une hauteur ( 4 et 4 pour l'exemple si dessus )
la valeur max d'une couleur : 15 pour cet exemple
ainsi qu'une liste chaînée comme représentée si dessus
je vous montre donc les classes que j'ai crée , mon problème est que je n'arrive pas à lire le fichier et mettre les informations dans ma liste chaînée...
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| public class Image {
private int largeur , hauteur ;
private int valeurMax ;
private Liste listeSegment = new Liste() ;
public Image(String nomFichier) {
FileInputStream fichier ;
int c ;
try{
fichier = new FileInputStream("images/"+nomFichier) ;
BufferedReader f = new BufferedReader(fichier);
f.readLine();
f.readLine();
String s = f.readLine();
String[] split = s.split(" ");
this.largeur = Integer.parseInt(split[0]);
this.hauteur = Integer.parseInt(split[1]);
this.valeurMax = Integer.parseInt(f.readLine());
System.out.println("Hauteur : "+this.hauteur + "\n largeur :"+ this.largeur
+ "\n valeurmax : " + this.valeurMax);
fichier.close();
}
}catch(FileNotFoundException ex){
System.out.println("Fichier n'existe pas");
}catch(IOException exc){
System.out.println("Erreur d'entrée sortie");
}
}
// setteurs et getteurs ... |
Le code de la Liste :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
| public class Liste {
Segment premier;
public boolean estVide() {
return premier == null;
}
public Segment getPremier() {
return premier;
}
public void ajouterALaFin(int red,int green,int blue , int n) {
if (estVide()) {
premier = new Segment(red,green,blue,n);
} else {
Segment dernier = getDernierElement();
dernier.setSuivant(new Segment(red,green,blue,n));
}
}
private Segment getDernierElement() {
Segment dernier = premier;
while (dernier.getSuivant() != null) {
dernier = dernier.getSuivant();
}
return dernier;
}
public int getLongueur() {
int longueur = 0;
Segment elt = getPremier();
while (elt != null) {
longueur++;
elt = elt.getSuivant();
}
return longueur;
}
public void concatener(Liste l) {
if (this.estVide()) {
this.premier = l.premier;
} else {
Segment dernier = getDernierElement();
dernier.setSuivant(l.getPremier());
}
}
public void ecrireListe() {
System.out.print("[");
Segment elt = getPremier();
while (elt.getSuivant() != null) {
System.out.print("(" + elt.getRed()+","+elt.getGreen()+","+elt.getBlue()+")");
elt = elt.getSuivant();
}
System.out.println("(" + elt.getRed()+","+elt.getGreen()+","+elt.getBlue()+")" + "]");
}
} |
ensuite le code de Segment :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
| public class Segment {
private int red,green,blue;
private int nombre ;
private Segment suivant;
public Segment(int red,int green,int blue , int n, Segment suivant) {
this.red = red;
this.green = green;
this.blue = blue;
this.nombre = n;
this.suivant = suivant;
}
public Segment(int red,int green,int blue , int n) {
this.red = red;
this.green = green;
this.blue = blue;
this.nombre = n;
this.suivant = null;
}
public int getRed() {
return red;
}
public void setRed(int red) {
this.red = red;
}
public int getGreen() {
return green;
}
public void setGreen(int green) {
this.green = green;
}
public int getBlue() {
return blue;
}
public void setBlue(int blue) {
this.blue = blue;
}
public int getNombre() {
return nombre;
}
public void setNombre(int nombre) {
this.nombre = nombre;
}
public Segment getSuivant() {
return suivant;
}
public void setSuivant(Segment suivant) {
this.suivant = suivant;
}
} |
Edit : Je me suis trompé de forum , je voulais dans le débuter de General Java