[java]Lecture d'une variable

Résolu
nanouss_nanouss Messages postés 19 Statut Membre -  
nanouss_nanouss Messages postés 19 Statut Membre -
Bonjour,
Je suis une débutante en java,je n'arrive pas à lire une variable saisie au clavier :
j'ai essayé avec:
char c=(char)System.in.read();
et:
Scanner c=new Scanner ( System.in);

Mais ça n'a pas fonctionné :(
J'utilise le JDK,peut être il me manque une bibliothèque mais je n'ai aucune idée !!

8 réponses

  1. danimo
     
    Salut,

    D'abord une question:
    Tu veux saisir quoi ?

    Si c'est UN caractère quelconque et le convertir en char l'idée est bonne mais...

    - avec char c et Scanner c ce n'est pas correct, il faut des noms (c) différents

    Exemple:
    Scanner sc = new Scanner ( System.in);
             System.out.print("\n\nEntrez un caractere: ");
             try
             {
                char c = (char)System.in.read();
                System.out.println("c = '" + c + "'");
             }
                catch(Exception e)
                {
                   System.out.println("Exception " + e.toString());
                }
    devrait fonctionner...
                
          		// Penser à fermer Scanner


    Cordialement,

    Dan
    0
  2. nanouss_nanouss Messages postés 19 Statut Membre
     
    Mercii pour l'aide mais ça ne fonctionne pas !!!
    toujours le problème dans Scanner il n'arrive pas à la connaître!!
    0
  3. danimo
     
    Re,

    As-tu importé la classe Scanner: ?
    import java.util.Scanner;

    Dan
    0
  4. nanouss_nanouss Messages postés 19 Statut Membre
     
    Ouii :)
    voilà le programme:
    import java.util.Scanner;
    public class Test6
    {
    public static void main(String args[])
    {
    int n,a;
    String nom_mois[];
    int mois=Integer.parseInt(args[0]);
    switch(mois)
    {
    case 1:
    case 3:
    case 5:
    case 7:
    case 8:
    case 10:
    case 12: n=31; break;
    case 4:
    case 6:
    case 9:
    case 11: n=30; break;
    case 2: {Scanner sc = new Scanner ( System.in);
    System.out.println("Donner lannee courante");
    try
    {
    a = (int)System.in.read();
    System.out.println("a = '" + a + "'");
    }
    catch(Exception e)
    {
    System.out.println("Exception " + e.toString());
    }
    if(a%4==0)
    n=29;
    else n=28;
    break;
    }
    default: n=0; break;
    }
    nom_mois=new String[12];
    nom_mois[0]="Janvier";
    nom_mois[1]="Fevrier";
    nom_mois[2]="Mars";
    nom_mois[3]="Avril";
    nom_mois[4]="Mai";
    nom_mois[5]="Juin";
    nom_mois[6]="Juillet";
    nom_mois[7]="Aout";
    nom_mois[8]="Septembre";
    nom_mois[9]="Octobre";
    nom_mois[10]="Novembre";
    nom_mois[11]="Decembre";
    System.out.println("Le mois de "+nom_mois[Integer.parseInt(args[0])]+" a "+n+" jours");
    }
    }
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. danimo
     
    Ok,

    Mais ce code ne compile pas, pourquoi ?

    Dis moi quel message d'erreur tu as car je ne voudrais pas te donner la réponse,
    mais que tu la découvres toi- même...
    Et si tu veux bien nous avancerons pas à pas jusqu'à ce que tu obtiennes ce que tu dois obtenir.
    0
  7. nanouss_nanouss Messages postés 19 Statut Membre
     
    Enfin,il a compilé
    Merci énormément pour l'aide :) :)
    0
  8. danimo
     
    Si cela t'interresse je te montres comment j'aurais fait:

    Les mois 1 2 3 4 5 6 7 8 9 10 11 et 12 sont en arguments deString args[]

    Ton code
    
       import java.util.Scanner; 
       public class Test6 
       { 
          public static void main(String args[]) 
          { 
             int n,a; // 1ère erreur a n'est pas initialisée
             String nom_mois[]; 
             int mois=Integer.parseInt(args[0]); 
             switch(mois) 
             { 
                case 1: 
                case 3: 
                case 5: 
                case 7: 
                case 8: 
                case 10: 
                case 12: n=31; 
                   break; 
                case 4: 
                case 6: 
                case 9: 
                case 11: n=30; 
                   break; 
                case 2: 
                   {Scanner sc = new Scanner ( System.in); 
                      System.out.println("Donner lannee courante"); 
                      try 
                      { 
                         a = (int)System.in.read(); 
                         System.out.println("a = '" + a + "'"); 
                      } 
                         catch(Exception e) 
                         { 
                            System.out.println("Exception " + e.toString()); 
                         } 
                      if(a%4==0) 
                         n=29; 
                      else n=28; 
                      break; 
                   } 
                default: n=0; 
                   break; 
             } 
             nom_mois=new String[12]; 
             nom_mois[0]="Janvier"; 
             nom_mois[1]="Fevrier"; 
             nom_mois[2]="Mars"; 
             nom_mois[3]="Avril"; 
             nom_mois[4]="Mai"; 
             nom_mois[5]="Juin"; 
             nom_mois[6]="Juillet"; 
             nom_mois[7]="Aout"; 
             nom_mois[8]="Septembre"; 
             nom_mois[9]="Octobre"; 
             nom_mois[10]="Novembre"; 
             nom_mois[11]="Decembre";
             
          //	2ème erreur:
          // logiquement nous devons avoir les arguments 1 2 3 4 5 6 7 8 9 10 11 et 12 dans String args[]
          // sinon, il faudrait modifier tous les "case" et avoir args[] de 0 à 11.
          // que nous retourne Integer.parseInt(args[0]) ? 1; or nous commencons par le mois de janvier et
          // dans le tableau nom_mois l'index de Janvier est 0, pas 1...
          // nous pouvons modifier la ligne comme indiqué ci-dessous (avec -1)
             //System.out.println("Le mois de " + nom_mois [Integer.parseInt(args[0])]+" a "+n+" jours");
             System.out.println("Le mois de " + nom_mois [Integer.parseInt(args[0]) -1]+" a "+n+" jours");
          //   Mais mieux puisque nous avons le mois dans... int mois
             System.out.println("Le mois de " + nom_mois [mois -1]+" a "+n+" jours");
          // 3ème erreur: le programme termine après le 1er mois
          // Il faut donc créer une boucle qui permettra de traiter les autres mois.
          } 
       }
    

    Ton code devient:
    import java.util.Scanner; 
       public class Test6 
       { 
          public static void main(String args[]) 
          {
          
             String nom_mois[]; 
             nom_mois=new String[12]; 
             nom_mois[0]="Janvier"; 
             nom_mois[1]="Fevrier"; 
             nom_mois[2]="Mars"; 
             nom_mois[3]="Avril"; 
             nom_mois[4]="Mai"; 
             nom_mois[5]="Juin"; 
             nom_mois[6]="Juillet"; 
             nom_mois[7]="Aout"; 
             nom_mois[8]="Septembre"; 
             nom_mois[9]="Octobre"; 
             nom_mois[10]="Novembre"; 
             nom_mois[11]="Decembre";
          
             int n = 0, a = 0, mois = 0;
             //String nom_mois[];
             for(int i = 0; i < 12; i++)
             { 
                mois = Integer.parseInt(args[i]);
                switch(mois) 
                { 
                   case 1: 
                   case 3: 
                   case 5: 
                   case 7: 
                   case 8: 
                   case 10: 
                   case 12: n=31; 
                      break; 
                   case 4: 
                   case 6: 
                   case 9: 
                   case 11: n=30; 
                      break; 
                   case 2: 
                      {
                         Scanner sc = new Scanner ( System.in); 
                         System.out.print("Donner l'annee du mois de fevrier "); 
                         try 
                         { 
                            a = (sc.nextInt()); 
                            //System.out.println("a = " + a); 
                         } 
                            catch(Exception e) 
                            { 
                               System.out.println("Exception " + e.toString()); 
                            } 
                         if(a%4==0) 
                            n=29; 
                         else n=28; 
                         break; 
                      } 
                   default: n=0; 
                      break; 
                }
             
             // ce qui suit en commentaire est déplacé au début de la méthode main
             /*nom_mois=new String[12]; 
             nom_mois[0]="Janvier"; 
             nom_mois[1]="Fevrier"; 
             nom_mois[2]="Mars"; 
             nom_mois[3]="Avril"; 
             nom_mois[4]="Mai"; 
             nom_mois[5]="Juin"; 
             nom_mois[6]="Juillet"; 
             nom_mois[7]="Aout"; 
             nom_mois[8]="Septembre"; 
             nom_mois[9]="Octobre"; 
             nom_mois[10]="Novembre"; 
             nom_mois[11]="Decembre"; */
             
                String libAnnee = "";
                if(mois == 2)
                   libAnnee = " " + Integer.toString(a);
                else libAnnee = "";
             //System.out.println("Le mois de "+nom_mois[Integer.parseInt(args[0])]+" a "+n+" jours");
                System.out.println("Le mois de " + nom_mois[mois-1] + libAnnee + " a " + n + " jours");
             }
          } 
       }
    


    Remarque:

    -toute la partie switch(mois) était correcte !!!

    Et cela donne (avec entrée de 2000 pour février):

    Le mois de Janvier a 31 jours
    Donner l'annee du mois de fevrier: 2000
    Le mois de Fevrier 2000 a 29 jours
    Le mois de Mars a 31 jours
    Le mois de Avril a 30 jours
    Le mois de Mai a 31 jours
    Le mois de Juin a 30 jours
    Le mois de Juillet a 31 jours
    Le mois de Aout a 31 jours
    Le mois de Septembre a 30 jours
    Le mois de Octobre a 31 jours
    Le mois de Novembre a 30 jours
    Le mois de Decembre a 31 jours
    0
  9. nanouss_nanouss Messages postés 19 Statut Membre
     
    Merci beaucoup ^^
    0