[JAVA] méthode de modification problème

Fermé
capa57 Messages postés 350 Date d'inscription lundi 30 juin 2008 Statut Membre Dernière intervention 26 mai 2016 - 29 mai 2010 à 18:51
Bonjour,

Voilà j'ai un soucis dans mon code, en fait j'ai des logements qui peuvent être soit des maisons soit des appartements, donc je créer mes logements, et j'aimerai les modifier par la suite, j'ai donc créer une méthode, mais celle ci fonctionne que avec les appartements et non avec les maisons alors que j'ai mis la même chose pour les 2 ... si quelqu'un peut m'aider...

Il me met ceci comme erreur :

Exception in thread "main" java.lang.ClassCastException: appartement cannot be cast to maison
at agence.modifLogement(agence.java:203)
at gestionAgence.run(gestionAgence.java:58)
at gestionAgence.main(gestionAgence.java:70)

voici mon code



public void modifLogement()
{
String choix = Console.lireClavier("\n1=Appartement, 2=Maison : ");
String uneAdresse = Console.lireClavier("adresse : ");

if(choix.equals("1"))
{
for (int i=0; i < logements.size(); i++)
{
appartement monLog = (appartement) (logements.get(i));
if (monLog.getAdresse().equals(uneAdresse))
{
monLog = (appartement) logements.get(i);
String uneAdr = Console.lireClavier("nouvelle adresse ? : ");
String uneSurf = Console.lireClavier("nouvelle surface ? : ");
int uneSurface = Integer.valueOf(uneSurf).intValue();
String unLoyer = Console.lireClavier("nouveau loyer ? : ");
int unLoyerDeBase = Integer.valueOf(unLoyer).intValue();
String etage = Console.lireClavier("combien d'étages ? : ");
int unEtage = Integer.valueOf(etage).intValue();
String monEtat = Console.lireClavier("libre ou occupé ? : ");
monLog.setAdresse(uneAdr);
if (monEtat.equals("occupé"))
{
monLog.setEtat(false);
}
else
{
monLog.setEtat(true);
}
monLog.setLoyerBase(unLoyerDeBase);
monLog.setSurface(uneSurface);
monLog.setAdresse(uneAdr);
monLog.setEtage(unEtage);
}
}
}
if(choix.equals("2"))
{
for (int j=0; j < logements.size(); j++)
{
maison maMaison = (maison) (logements.get(j));
if (maMaison.getAdresse().equals(uneAdresse))
{
maMaison = (maison) logements.get(j);
String uneAdr = Console.lireClavier("nouvelle adresse ? : ");
String uneSurf = Console.lireClavier("nouvelle surface ? : ");
int uneSurface = Integer.valueOf(uneSurf).intValue();
String unLoyer = Console.lireClavier("nouveau loyer ? : ");
int unLoyerDeBase = Integer.valueOf(unLoyer).intValue();
String surfJard = Console.lireClavier("surface du jardin ? : ");
int surfaceJardin = Integer.valueOf(surfJard).intValue();
String monEtat = Console.lireClavier("libre ou occupé ? : ");
maMaison.setAdresse(uneAdr);
if (monEtat.equals("occupé"))
{
maMaison.setEtat(false);
}
else
{
maMaison.setEtat(true);
}
maMaison.setLoyerBase(unLoyerDeBase);
maMaison.setSurface(uneSurface);
maMaison.setAdresse(uneAdr);
maMaison.setsurfaceJardin(surfaceJardin);
}
}
}
}


J'arrive à afficher

1=Appartement, 2=Maison : 2
adresse : 3 rue

et ensuite il me met l'erreur.
A voir également: