Erreur : cannot find symbol

Résolu
Ipoote Messages postés 47 Statut Membre -  
KX Messages postés 19031 Statut Modérateur -
Bonjour,

Je suis actuellement en train de suivre un cours sur Open Classrooms afin d'apprendre la programmation avec Java.
Le problème étant qu'il n'y a ni aide ni correction pour les applications proposées.

Je viens donc vers vous afin d'obtenir de l'aide concernant le code écrit ci-joint afin de régler le problème que je n'arrive pas à régler. (étant débutant, je vous accorde que le problème doit fort probablement être super simple à régler).

Merci à vous !

2 réponses

  1. KX Messages postés 19031 Statut Modérateur 3 020
     
    Bonjour,

    Merci de copier-coller ton code, entre les balises <code java></code> et les éventuels messages d'erreurs, parce que ton image est illisible...
    1
    1. Di_Link
       
      Je suis d'accord xD l'image nest pas très visible.

      Salut alors tout d'abors si tu veut des cours plus précis je te conseil :

      — Cours de Koor : https://koor.fr/Java/Tutorial/Index.wp (aussi en vidéo : https://www.youtube.com/watch?v=pXaaacSkPqc&list=PLBNheBxhHLQxfJhoz193-dRwvc2rl8AOW
      — Cours plus avancé de Jean-Michel Doudoux : https://www.jmdoudoux.fr/java/dej/indexavecframes.htm
      — JetBrains Academy : https://www.jetbrains.com/fr-fr/academy/

      Aussi je te conseil fortement d’utiliser un IDE comme intelij Idea qui en est un très bon ! Car cela t'évitera d'avoir des erreurs toute bête comme celle ci :)

      Sinon l'erreur est comme je l'est dit toute bête car tu as juste oublié d'importé en haut de ton code : import java.util.List;
      Car tu utilise une List à la ligne 9 mais tu n'import pas la class , alors que pour l'ArrayList tu import la class.

      Avec un IDE tu verra toute de suite l'erreur que tu pourra réparer en moins de 2 secondes !

      J’espère avoir pu t'aider et bonne continuation dans ton apprentissage en Java !

      Di_Link
      1
      1. Ipoote Messages postés 47 Statut Membre > Di_Link
         
        Merci pour ton aide, mais cela ne fonctionne toujours pas lorsque je rentre le code que tu m'indiques.

        J'ai essayé de télécharger Intelij IDEA, mais je n'y ai pas compris grand chose, sûrement parce que je débute j'imagine ?
        0
    2. Ipoote Messages postés 47 Statut Membre
       
      import java.util.ArrayList;
      
      public class GuestsList {
          
          public static void main(String[] args) {
          
              //TODO Remplacez ?? par le code correct pour créer une liste de type String
      
              List<String> guests = new ArrayList();
       
              //TODO Ajoutez Joey, Martin et Marie à la liste
          
              guests.add("Joey");
              guests.add("Martin");
              guests.add("Marie");
      
              //TODO Complétez l'instruction en remplaçant ?? pour afficher la taille de la liste
              System.out.println(guests.size);
              
             //TODO Remplacez Martin par John dans la liste
              
              guests.set(1,"John");
      
             //TODO Retirez Joey de la liste
            
              guests.remove(0);
      
             //Affiche le contenu de la liste
             System.out.println("The guests are:");
             for(String guest: guests){
                 System.out.println(guest);
             }
          }
      }
      
      
      0
      1. Ipoote Messages postés 47 Statut Membre > Ipoote Messages postés 47 Statut Membre
         
        GuestsList.java:9: error: cannot find symbol
        List <String> guests = new ArrayList ();
        symbol : class List
        location : GuestsList
        1 error

        voici l'erreur qui survient
        0
    3. KX Messages postés 19031 Statut Modérateur 3 020
       
      Bonjour,

      Pour reprendre ce qui a été dit :

      Di_Link:
      tu as juste oublié d'importé en haut de ton code :
      import java.util.List;
      Ipoote:
      cela ne fonctionne toujours pas lorsque je rentre le code que tu m'indiques.
      import java.util.ArrayList;
      
      public class GuestsList {

      L'import de java.util.List n'est toujours pas dans ton code, tu as importé ArrayList, mais pas List :
      import java.util.ArrayList;
      import java.util.List;
      
      public class GuestsList {


      De plus tu as un autre erreur ligne 18, tu as écrit
      guests.size
      comme si c'était un attribut alors que
      size
      est une méthode, il faut donc des parenthèses :
      System.out.println(guests.size());
      0
  2. Ipoote Messages postés 47 Statut Membre
     
    Merci beaucoup à vous 2, cela a fonctionné !

    Pendant que j'y suis, je bute désormais sur un autre problème avec un autre exercice, voici le code de base :

    import java.util.*;
    
    public class MonthsMap {
        
        public static void main(String[] args) {
            Map<String, Integer> months = new HashMap <String, Integer>();   
            
            //TODO Remplacez les variables par des constantes
            months.put("June", 6);
            months.put("September", 9);
            months.put("March", 5);
              
            //TODO Corrigez "march" (mars) par sa vraie valeur (3)
         
            //TODO Supprimez "june" (juin)
         
            //Affiche le contenu du dictionnaire
            System.out.println("Here are some interesting months");
            for (Map.Entry<String,Integer> month : months.entrySet()){
                System.out.println(month.getKey() + " is month number " + month.getValue() + " of the year ");
            }
        }   
    }
    
    


    une fois l'exercice effectué, me voici avec cela, qui ne fonctionne pas :

    import java.util.*;
    
    public class MonthsMap {
        
        public static void main(String[] args) {
            Map<String, Integer> months = new HashMap <String, Integer>();   
            
            //TODO Remplacez les variables par des constantes
            private static final String june = "June";
            private static final String september = "September";
            private static final String march = "March";
    
            months.put (june , 6);
            months.put (september , 9);
            months.put (march , 5);
    
            //TODO Corrigez "march" (mars) par sa vraie valeur (3)
         
            months.put ("March" , 3);
    
            //TODO Supprimez "june" (juin)
         
            months.remove ("June");
    
            //Affiche le contenu du dictionnaire
            System.out.println("Here are some interesting months");
            for (Map.Entry<String,Integer> month : months.entrySet()){
                System.out.println(month.getKey() + " is month number " + month.getValue() + " of the year ");
            }
        }   
    }
    


    j'imagine que le problème vient de mon "private static final String", mais je ne vois pas comment le régler ; j'ai essayé d'enlever le "private static"et cela fonctionne, mais je ne pense pas que ce soit la meilleure solution
    0
    1. KX Messages postés 19031 Statut Modérateur 3 020
       
      Les mots clés private et static s'utilisent sur des classes, des méthodes ou des attributs, mais jamais sur des variables locales. C'est donc normal que tu ais eu une erreur en essayant de les mettre et le code que tu obtiens sans - et qui fonctionne - est bien celui qu'il faut.
      0
      1. Ipoote Messages postés 47 Statut Membre > KX Messages postés 19031 Statut Modérateur
         
        Merci beaucoup !!

        Désolé de t'embêter mais dans cet extrait de code, on me dit que la valeur finale de x est 22 et la valeur finale de y est 64, or je ne vois rien dans le code qui puisse mener à un tel résultat ?

        public static int transform(int a, int b) {
            int x = a + b;
            int y = x * 2;
            return y;
        }
        
        public static void main(String[] args) {
            int x = 1;
            int y = 10;
            x = transform(x, y);
            y = transform(y, x);
        }
        
        0
      2. KX Messages postés 19031 Statut Modérateur 3 020 > Ipoote Messages postés 47 Statut Membre
         
        Ce qu'il faut comprendre c'est que les variables x et y qui sont dans la méthode transform n'ont rien à voir avec celles de la méthode main.

        Si on déroule le programme on a ceci :
        main.x =1
        main.y = 10

        transform.a = main.x = 1
        transform.b = main.y = 10
        transform.x = transform.a + transform.b = 1 + 10 = 11
        transform.y = transform.x * 2 = 11 * 2 = 22
        transform.return = transform.y = 22
        main.x = transform.return = 22

        transform.a = main.y = 10
        transform.b = main.x = 22
        transform.x = transform.a + transform.b = 10 + 22 = 32
        transform.y = transform.x * 2 = 32 * 2 = 64
        transform.return = transform.y = 64
        main.y = transform.return = 64

        On obtient donc effectivement main.x qui vaut 22 et main.y qui vaut 64

        C'est le genre de chose que tu pourrais voir en utilisant un IDE et en exécutant le code en mode debug pas à pas.
        0