Erreur : cannot find symbol

Signaler
Messages postés
26
Date d'inscription
dimanche 23 septembre 2018
Statut
Membre
Dernière intervention
1 octobre 2020
-
Messages postés
16055
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
14 octobre 2020
-
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

Messages postés
16055
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
14 octobre 2020
2 696
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...
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
Messages postés
26
Date d'inscription
dimanche 23 septembre 2018
Statut
Membre
Dernière intervention
1 octobre 2020
> 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 ?
Messages postés
26
Date d'inscription
dimanche 23 septembre 2018
Statut
Membre
Dernière intervention
1 octobre 2020

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

Messages postés
26
Date d'inscription
dimanche 23 septembre 2018
Statut
Membre
Dernière intervention
1 octobre 2020
>
Messages postés
26
Date d'inscription
dimanche 23 septembre 2018
Statut
Membre
Dernière intervention
1 octobre 2020

GuestsList.java:9: error: cannot find symbol
List <String> guests = new ArrayList ();
symbol : class List
location : GuestsList
1 error

voici l'erreur qui survient
Messages postés
16055
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
14 octobre 2020
2 696
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());
Messages postés
26
Date d'inscription
dimanche 23 septembre 2018
Statut
Membre
Dernière intervention
1 octobre 2020

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
Messages postés
16055
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
14 octobre 2020
2 696
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.
Messages postés
26
Date d'inscription
dimanche 23 septembre 2018
Statut
Membre
Dernière intervention
1 octobre 2020
>
Messages postés
16055
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
14 octobre 2020

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);
}
Messages postés
16055
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
14 octobre 2020
2 696 >
Messages postés
26
Date d'inscription
dimanche 23 septembre 2018
Statut
Membre
Dernière intervention
1 octobre 2020

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.