Modifier une variable d'instance par une autr

Résolu/Fermé
clemence - 29 mars 2009 à 20:50
 clemence - 30 mars 2009 à 01:47
Bonjour,
Bonjour,
j'ai conçu un tableau de taille 4 contenant des objets "capital" de variables d'instances String suivantes "pays", "ville" .
je souhaite modifier le nom d'une ville par une autre ville mais ma méthode "modifier" ne veut pas fonctionner.:?
pourriez-vous m'aider à déterminer le hic?

[CODE]class Capitale{
String ville;
String pays;

public Capitale(String v,String p){
this.ville=v;
this.pays=p;
}

void affiche(){
Terminal.ecrireStringln("ville "+this.ville);
Terminal.ecrireStringln("pays "+this.pays);
}
}

class Repertoire{
Capitale[]R;

public Repertoire(int t){
R=new Capitale[t];
}

Capitale[] modifier(Capitale C){
for(int i=0;i<this.R.length;i++){
if(C.ville.equals(R[i])){
C.ville=nouv;
}
}
return R;
}
void afficher(){
for(int i=0;i<this.R.length;i++){
R[i].affiche();
}
}
}

public class capitalo{
public static void main(String[]args){
int taille=4;
Repertoire Rep=new Repertoire(taille);
Rep.R[0]=new Capitale("nantes","france");
Rep.R[1]=new Capitale("rome","italie");
Rep.R[2]=new Capitale("barcelone","espagne");
Rep.R[3]=new Capitale("mons","belgique");
System.out.println("Modifier la ville de quel pays?");
String pays=in.nextInt();
String ville="";
System.out.println("Quelle est la nouvelle ville de "+pays+" ?");
String nouv=in.nextInt();
Rep.modifier(new Capitale(ville,pays, nouv))
}
}
}/CODE

3 réponses

AmineKalaa Messages postés 87 Date d'inscription jeudi 26 mars 2009 Statut Membre Dernière intervention 10 janvier 2011 7
30 mars 2009 à 00:12
dans la methode modifier:
1) c'est quoi le nouv??
2) if(C.ville.equals(R[i]))
C.ville: c'est un String et R[i] c'est un Capital?? comment comparer un objet String avec un autre de type Capital?
le résultat sera toujours faux
il faut ecrire: if(C.ville.equals(R[i].ville))
0
AmineKalaa Messages postés 87 Date d'inscription jeudi 26 mars 2009 Statut Membre Dernière intervention 10 janvier 2011 7
30 mars 2009 à 00:33
j'ai pas bien lu le code mais voila je propose une solution:
Capitale[] modifier(Capitale C,String nouv){
   for(int i=0;i<this.R.length;i++){
if(C.pays.equals(R[i].pays)){
              C.ville=nouv;
      }
   }
  return R;
} 

dans le main():
Rep.modifier(new Capitale(ville,pays), nouv)
0
merci pour ces précisions AmineKalaa, mon programme se compile maintenant ;)
0