Erreur : cannot find symbol

Résolu/Fermé
Ipoote Messages postés 45 Date d'inscription dimanche 23 septembre 2018 Statut Membre Dernière intervention 21 mai 2023 - 29 sept. 2020 à 19:31
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 - 1 oct. 2020 à 22:57
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

KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
29 sept. 2020 à 21:09
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
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
Ipoote Messages postés 45 Date d'inscription dimanche 23 septembre 2018 Statut Membre Dernière intervention 21 mai 2023 > Di_Link
1 oct. 2020 à 16:02
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
Ipoote Messages postés 45 Date d'inscription dimanche 23 septembre 2018 Statut Membre Dernière intervention 21 mai 2023
1 oct. 2020 à 15:57
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
Ipoote Messages postés 45 Date d'inscription dimanche 23 septembre 2018 Statut Membre Dernière intervention 21 mai 2023 > Ipoote Messages postés 45 Date d'inscription dimanche 23 septembre 2018 Statut Membre Dernière intervention 21 mai 2023
1 oct. 2020 à 16:00
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
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
1 oct. 2020 à 16:20
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
Ipoote Messages postés 45 Date d'inscription dimanche 23 septembre 2018 Statut Membre Dernière intervention 21 mai 2023
Modifié le 1 oct. 2020 à 16:50
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
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
1 oct. 2020 à 17:22
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
Ipoote Messages postés 45 Date d'inscription dimanche 23 septembre 2018 Statut Membre Dernière intervention 21 mai 2023 > KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024
1 oct. 2020 à 21:54
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
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015 > Ipoote Messages postés 45 Date d'inscription dimanche 23 septembre 2018 Statut Membre Dernière intervention 21 mai 2023
1 oct. 2020 à 22:57
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