[java]Bird cannot be resolved to a type

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"; 
  } 
 } 
} 



5 réponses

  1. 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
    1. Modérateur
      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
      1. Il faut redéfinir la méthode toString dans les classes Car et Bird
        

        m'expliquez svp
        0
        1. 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
          1. Modérateur
            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