[java]Bird cannot be resolved to a type

domxaline -  
KX Messages postés 19031 Statut Modérateur -
Bonjour,
mon prg compile pas,il donne une erreur
Exception in thread "main" java.lang.Error: Unresolved compilation problems:
Bird cannot be resolved to a type
Bird cannot be resolved to a type
Bird cannot be resolved to a type

at Mystack.main(Mystack.java:28)

pourtant il accepte la class Car
pourquoi il donne erreur pour la class Bird ?aidez moi svp

import java.util.*; 
public class Mystack  
{ 
  private LinkedList list=new LinkedList(); 
    public void push1(Object o) 
    { 
   list.addFirst(o); 
    } 
     
    public void push2(Object obj) 
    { 
      list.addLast(obj); 
    } 
     
    public Object bottom() 
    { 
     return list.getLast(); 
    } 
     
    public Object pop() 
    { 
     return list.removeFirst(); 
    } 
     
    public static void main(String args []) 
    { 
     Car myCar; 
     Bird myBird; 
     Mystack s=new Mystack(); 
     s.push1 (new Car()); 
     s.push2 (new Bird()); 
     myCar=(Car)s.pop(); 
     System.out.println("The first element in the list:"+myCar); 
     myBird=(Bird)s.bottom(); 
     System.out.println("The last element in the list:"+myBird); 
    } 
} 
class Car 
{ 
 String car1,car2,car3,car4; 
 Car() 
 { 
  car1="Benz"; 
  car2="Toyoto"; 
  car3="Qualis"; 
  car4="Santro"; 
 } 
 class Bird 
 { 
  String bird1,bird2,bird3; 
  Bird() 
  { 
   bird1="parrot"; 
   bird2="duck"; 
   bird3="raven"; 
  } 
 } 
} 



A voir également:

5 réponses

domxaline
 
après l'exécution ce programme j'obtiens ce résultat
This first element in the list:Car@e48e1b
This last element in the list:Bird@12dacd1

mon question que signifie
Car@e48e1b
Bird@12dacd1

merci d'avance
0
KX Messages postés 19031 Statut Modérateur 3 020
 
Le problème de compilation vient du fait que Car est déclarée à l'intérieur de Mystack (pas de problème) mais Bird est déclaré dans Car (problème), il faut désimbriquer tout cela, de préférence en mettant chaque classe dans un fichier à part, car là elles n'ont aucun lien entre elles.

Car@e48e1b, et Bird@12dacd1, ce sont les affichages par défaut des objets (voir la documentation de la méthode toString dans la classe Object). Il faut redéfinir la méthode toString dans les classes Car et Bird pour personnaliser ces affichages.
0
domxaline
 
Il faut redéfinir la méthode toString dans les classes Car et Bird

m'expliquez svp
0
domxaline
 
même en écrivant ainsi
System.out.println("This last element in the list:"+myBird.toString());

j'ai toujours
This last element in the list:Bird@1ad086a
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
KX Messages postés 19031 Statut Modérateur 3 020
 
La méthode toString fait par défaut un affichage comme ça nomClasse@hashCode, mais si on veux autre chose, il faut la réécrire la méthode, on appelle ça une redéfinition.

Exemple :

class Car 
{ 
    String car1,car2,car3,car4;

    @Override
    public String toString()
    {
        return car1+","+car2+","+car3+","+car4;
    }
}
0