Liste Objet [debutant java]

Fermé
francis54 - Modifié par francis54 le 5/06/2011 à 12:45
mamiemando Messages postés 33076 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 17 avril 2024 - 5 juin 2011 à 15:23
Bonjour,




Voila je suis débutant en java et en programmation tous cours....
Je cherche a créer un objet et a le placer dans une liste.

if (saisie==1){
Terminal.ecrireStringln("nom de l'image");
String i=Terminal.lireString();
imagelue.ajouterALaFin(new ImageExterneLue(i));
Mon contructeur :
public ImageExterneLue(String nomf) throws IOException,
FileNotFoundException{
this.nom = nomf;
img = ImageIO.read(new File(nomf));
this.showImage();

Ensuite Je cherche a le retrouver par son nom pour le fermer

public void fermeim (String s){
ElementListe tmp = premier;
while (tmp!=null){
if(tmp.getValeur().nom==s){
tmp.getValeur().fermer();
}
tmp=tmp.getSuivant();
}
}//fin checkliste

ça ne marche pas :-(((((((
je pense qu'il ne retrouve pas l'objet par son nom je trouve pas d'autre solution........
HELP PLEASE!!!!!!!
merci pour vos réponse
A voir également:

1 réponse

mamiemando Messages postés 33076 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 17 avril 2024 7 748
5 juin 2011 à 13:14
C'est normal il faut créer ta liste (avec new), puis la compléter avec une méthode du genre add().

Supposons que tu veuilles maintenir une liste d'objets de type Personne :

class Personne{
  protected String nom;
  protected String prenom;

  public Personne(String nom, String prenom){
    this.prenom = prenom;
    this.nom = nom;
  }

  public String getPrenom(){
    return this.nom;
  }

  public String getNom(){
    return this.nom;
  }

  public String toString(){
    return this.getPrenom() + ' ' + this.getNom();
  }

  public static void main(String args[]){
    Personne monica = new Personne("Monica", "Geller");
    Personne chandler = new Personne("Chandler", "Bing");
    List<Personne> liste = new ArrayList<Personne>(); 
    liste.add(monica);
    liste.add(chandler);
    for(personne : liste) System.out.println(personne);
  }
}


Je t'invite également à lire un cours de java car la gestion des exceptions n'est pas top, normalement ta classe aurait du les rattraper avec un try catch plutôt que de les repropager avec un throws.
https://openclassrooms.com/fr/courses/6173501-debutez-la-programmation-avec-java?archived-source=26832

Bonne chance
0
Merci pour ta réponse

J'ai bien créer ma liste avec un new au debut du code
ListeIter imagelue = new ListeIter();
J'ai toujours le même problème.
Est-il possible que cela vienne du fait que lors de la création de mon objet je ne le nome pas ?
imagelue.add(new ImageExterneLue(i));
Puisse que je crée un objet des que l'utilisateur ouvre une image...
je ne peut pas le créer comme ça :
Personne monica = new Personne("Monica", "Geller");
car a chaque création il remplacera l'ancien objet par le nouveau... nan?

ps : merci beaucoup pour le tuto
0
mamiemando Messages postés 33076 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 17 avril 2024 7 748
5 juin 2011 à 15:23
Merci de soigner l'orthographe, là ça pique un peu les yeux.

Est-il possible que cela vienne du fait que lors de la création de mon objet je ne le nomme pas ?

Non ce n'est pas gênant.

car a chaque création il remplacera l'ancien objet par le nouveau... nan?

Non pas du tout. Je pense qu'il faut vraiment que tu lises un cours de Java. Tu peux avoir plusieurs instances de Personne. Chacune référence une zone mémoire qui est allouée grâce à la directive new. Dans l'exemple que je t'ai donné, monica et chandler référencent chacun un espace mémoire créé pour l'occasion et donc différent. Il n'y a donc aucun risque de conflit.

Tu peux d'ailleurs le voir en faisant

Personne monica = new Personne("Monica", "Geller");
Personne chandler = new Personne("Chandler", "Bing");
System.out.println(monica);
System.out.println(chandler);


Comme tu peux le constater les deux objets sont toujours utilisables.

Par ailleurs ta liste devrait être de type List<ImageExterneLue> en admettant que tu aies écrit une classe ImageExterneLue.

Bonne chance
0