Partage
  • Partager sur Facebook
  • Partager sur Twitter

Exercice cours " Débuter la programmation avec Jav

    20 janvier 2020 à 15:46:11

    Bonjour à tous, j'ai un petit soucis avec le dernier exercice du chapitre 4 de la partie 2.

    import java.util.*;
    
    public class MonthsMap {
        
        public static void main(String[] args) {
            
            HashMap<String, Integer> months = new HashMap <String, Integer>();
      
            //TODO Remplacez les variables par des constantes
    
            private static final String kJune = "June";
            private static final String kSeptember = "September";
            private static final String kMarch = "March";
            months.put(kJune, 6);
            months.put(kSeptember, 9);
            months.put(kMarch, 5);
             
            //TODO Corrigez "march" (mars) par sa vraie valeur (3)
    
            months.put(kMarch, 3);
    
            //TODO Supprimez "june" (juin)
    
            months.remove(kJune);
    
            //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(kMarch) + " is month number " + month.getValue(kMarch) + " of the year ");
            }
        }   
    }



    La console me retourne 3 erreurs

    sandbox $ rm -f *.class
    sandbox $ 
    sandbox $ 
    sandbox $ javac MonthsMap.java
    MonthsMap.java:10: error: illegal start of expression
             static final String kJune = "June";
             ^
    MonthsMap.java:11: error: illegal start of expression
             static final String kSeptember = "September";
             ^
    MonthsMap.java:12: error: illegal start of expression
             static final String kMarch = "March";
             ^
    3 errors
    sandbox $ java MonthsMap
    Error: Could not find or load main class MonthsMap
    sandbox $ 

    Seulement, je n'ai aucune idée du pourquoi...
    Je sais que le cours n'est pas complètement à jour (d'après un collègue dev, qui n'a malheureusement pas le temps de faire mon prof ^^), peut être un soucis de ce côté là ? 

    Si je suis pas assez clair, n'hésitez pas me poser des questions, je suis pas encore tout à fait à l'aise avec le jargon mais je ferai mon max !

    Merci à vous !

    -
    Edité par Helior 20 janvier 2020 à 15:48:07

    • Partager sur Facebook
    • Partager sur Twitter
      20 janvier 2020 à 15:54:11

      Salut. Tu dois enlever les "private static". En effet ces mots clés sont seulement valables pour des attributs, là il s'agit de variables locales donc ça n'a pas de sens.
      • Partager sur Facebook
      • Partager sur Twitter
        20 janvier 2020 à 18:31:46

        Salut, merci de ta réponse !

        J'ai supprimé les private static comme tu l'as dis.

        import java.util.*;
        
        public class MonthsMap {
            
            public static void main(String[] args) {
                
                HashMap<String, Integer> months = new HashMap <String, Integer>();
          
                //TODO Remplacez les variables par des constantes
        
                final String kJune = "June";
                final String kSeptember = "September";
                final String kMarch = "March";
                months.put(kJune, 6);
                months.put(kSeptember, 9);
                months.put(kMarch, 5);  
               
                //TODO Corrigez "march" (mars) par sa vraie valeur (3)
        
                months.put(kMarch, 3);
        
                //TODO Supprimez "june" (juin)
        
                months.remove(kJune);
        
                //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(kMarch) + " is month number " + month.getValue(kMarch) + " of the year ");
                }
            }   
        }

        Et ca me donne une toute nouvelle erreur bien plus longue !

        sandbox $ rm -f *.class
        sandbox $ 
        sandbox $ 
        sandbox $ javac MonthsMap.java
        MonthsMap.java:23: error: method getKey in interface Entry<K,V> cannot be applied to given types;
                    System.out.println(month.getKey(kMarch) + " is month number " + month.getValue(kMarch) + " of the year ");
                                            ^
          required: no arguments
          found: String
          reason: actual and formal argument lists differ in length
          where K,V are type-variables:
            K extends Object declared in interface Entry
            V extends Object declared in interface Entry
        MonthsMap.java:23: error: method getValue in interface Entry<K,V> cannot be applied to given types;
                    System.out.println(month.getKey(kMarch) + " is month number " + month.getValue(kMarch) + " of the year ");
                                                                                         ^
          required: no arguments
          found: String
          reason: actual and formal argument lists differ in length
          where K,V are type-variables:
            K extends Object declared in interface Entry
            V extends Object declared in interface Entry
        2 errors
        sandbox $ java MonthsMap
        Error: Could not find or load main class MonthsMap
        sandbox $ ^C
        sandbox $ 




        • Partager sur Facebook
        • Partager sur Twitter
          20 janvier 2020 à 18:47:16

          Tu dois apprendre à lire les erreurs, ligne 30: les méthodes getKey et getValue ne prennent pas de paramètres. Donc

          System.out.println(month.getKey() + " is month number " + month.getValue() + " of the year ");



          • Partager sur Facebook
          • Partager sur Twitter
            20 janvier 2020 à 20:34:28

            Super ! Merci beaucoup !

            C'est vrai que pour le moment ça me fait clairement défaut, je les lis, mais je n'arrive pas encore à les comprendre, j'imagine que ça viendra avec l’expérience ! En tout cas maintenant je saurais les reconnaître !

            Encore merci :)

            • Partager sur Facebook
            • Partager sur Twitter
              26 janvier 2020 à 15:45:30 - Message modéré pour le motif suivant : Merci d'utiliser le bouton code du forum pour insérer votre code


              Exercice cours " Débuter la programmation avec Jav

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown