IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

Classe clavier problème avec char


Sujet :

Langage Java

  1. #21
    Membre habitué Avatar de Emplyst
    Inscrit en
    Mars 2006
    Messages
    152
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 152
    Points : 148
    Points
    148
    Par défaut
    J'avais remarquer ce comportement lors de mes petits tests de l'autre jour avec les scanners, l'astuce que j'ai trouve etait tres bourrin, c-a-d de faire 2 readline un a la suite de l'autre

  2. #22
    Membre habitué Avatar de benjiprog
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    302
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 302
    Points : 134
    Points
    134
    Par défaut
    Comment fait-tu pour saisir une variable de type char parce que je n'y arrive pas. readLine est une méthode de quelle classe?

  3. #23
    Membre habitué Avatar de Emplyst
    Inscrit en
    Mars 2006
    Messages
    152
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 152
    Points : 148
    Points
    148
    Par défaut
    http://java.sun.com/j2se/1.5.0/docs/...l/Scanner.html pour tout de suite, regarde dans les methodes next qqch, je te repond plus en profondeur des que j'arrive chez nous ++

  4. #24
    Membre habitué Avatar de benjiprog
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    302
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 302
    Points : 134
    Points
    134
    Par défaut
    Oui j'ai déjà vu cette doc malheuresement je l'a comprend pas très bien mais je n'ai pas trouver de méthode permettant de saisir une variable de type char.

  5. #25
    Membre habitué Avatar de Emplyst
    Inscrit en
    Mars 2006
    Messages
    152
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 152
    Points : 148
    Points
    148
    Par défaut
    Bon salut, hmm je ne sais si c'est justifier mais je crois que pour des raison de UTF-16/ASCII c'est pas conseiller d'utiliser des variables de type char au lieu d'utiliser des strings. (je crois avoir lu ca quelque part)

    Enfin, voici un petit exemple qui recupaire un caractere:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    import java.util.Scanner;
     
    public class GetChar
    {
     
        public static void main(String[] args)
        {
            char awnser;
            String option;
            Scanner stdin = new Scanner(System.in);
            System.out.print("Inscrivez 'A' pour abeille, 'B' pour ballon ou " + 
                             "'C' pour chat :");
            awnser = stdin.nextLine().toUpperCase().charAt(0);
            stdin.close(); //modif, c'est pas une mauvaise idee de fermer notre zolie objet ;)
            switch (awnser)
                {
                case 'A':
                    option = "abeille";
                    break;
                case 'B':
                    option = "ballon";
                    break;
                case 'C':
                    option = "chat";
                    break;
                default:
                    option = "un choix invalide";
                }
     
            System.out.printf("\u0007Vous avez choisit '%s'.", option);
        }
    }
    Enjoy!

  6. #26
    Membre habitué Avatar de benjiprog
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    302
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 302
    Points : 134
    Points
    134
    Par défaut
    Alors effectivement ca marche voilà le code que j'ai créer, mais dans ce cas on est obligé d'utiliser une variable de type char pour la condition du switch, car il me semble qu'il ne tolère pas les Strings :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    import java.util.Scanner;
    public class Switch {
     
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		char ope;
    		float nb,nb2;
    		float resu=0;
    		Scanner clavier = new Scanner (System.in);
     
    		System.out.print("Entrez un nombre :");
    		nb = Clavier.lireFloat();
    		System.out.print("Entrez un deuxieme nombre :");
    		nb2 = Clavier.lireFloat();
    		System.out.println("Choisissez parmi ces 4 operations.");
    		System.out.println("A : Addition");
    		System.out.println("S : Soustraction");
    		System.out.println("M : Multiplier");
    		System.out.println("D : Division");
    		System.out.print("Votre choix (tapper une lettre) :");
    		ope = clavier.nextLine().toUpperCase().charAt(0);
     
    		switch (ope)
    		{		
    			case 'A': resu=nb+nb2;
    			System.out.println("Le resultat de l'operation est :"+nb+" + "+nb2+" = "+resu);
    					  break;
    			case 'S': resu = nb-nb2;
    			System.out.println("Le resultat de l'operation est :"+nb+" - "+nb2+" = "+resu);
    					  break;
    			case 'M': resu = nb*nb2;
    			System.out.println("Le resultat de l'operation est :"+nb+" * "+nb2+" = "+resu);
    					  break;
    			case 'D': resu = nb/nb2;
    			System.out.println("Le resultat de l'operation est :"+nb+" / "+nb2+" = "+resu);
    					  break;
    			default : System.out.println("***Votre choix est invalide***");
    		}
    		clavier.nextLine(); /*Permet de voir le resultat*/
    		clavier.close(); /*on ferme l'objet nous n'en avons plus besoin*/
    	}
    }
    J'ai saisie mes 2 nombres avec une méthode de la classe Clavier (que j'ai mis précédemment dans ce topic), car si je les saisient avec la méthode de la classe Scanner j'obtient ce message d'erreur :
    Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 0
    at java.lang.String.charAt(Unknown Source)
    Je ne comprend pas ce message d'erreur.

  7. #27
    Expert éminent sénior
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Points : 21 324
    Points
    21 324
    Par défaut
    Ca veut tout simplement dire que tu demandes un index de caractère qui n'existe pas dans ta chaine de caractères.

    Donc commme tu recherches l'index 0, ca veut dire que la chaine que tu as ne contient rien.

  8. #28
    Membre habitué Avatar de benjiprog
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    302
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 302
    Points : 134
    Points
    134
    Par défaut
    Oui, mais dans quel chaîne de caractère puisque je n'ai pas d'élément de type String.
    Mais quand je saisie mes nombres avec la classe Clavier tout marche très bien pourtant.

  9. #29
    Membre habitué Avatar de Emplyst
    Inscrit en
    Mars 2006
    Messages
    152
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 152
    Points : 148
    Points
    148
    Par défaut
    nextLine retourne une string donc quand tu fais :
    xyz.nextLine().toUpperCase().chatAt(0); et qu'un personne ecrive rien, charAt(0) vas esseyer d'aller au premier caractere de ce que tu vas ecrire. Donc si tu marque rien il vas lancer une exception. Tu peux eviter cela en fesant un simple :
    String tmp = clavier.nextLine();
    if (tmp.length() > 0) // on verifit que la chaine entree a au moins 1 caractere
    {
    ope = tmp.toUpperCase().charAt(0);
    }
    else
    {
    ope = '';
    }

  10. #30
    Membre habitué Avatar de benjiprog
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    302
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 302
    Points : 134
    Points
    134
    Par défaut
    Oui seulement j'écrit quelques chose je tappe le caractère A B C ou D mais je n'ai pas le temps de l'écrire car l'erreur intervient juste avant. En fait je n'ai même pas le temps de saisir le caractère.

  11. #31
    Membre habitué Avatar de benjiprog
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    302
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 302
    Points : 134
    Points
    134
    Par défaut
    Finalement j'ai trouvé, le problème vient du fait qu'il ne faut pas entrer le caractère avec la méthode nextLine mais avec la méthode next :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ope = clavier.next().toUpperCase().charAt(0);
    Voilà merci à tous pour votre aide.

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Détection touches clavier : problème avec 'Alt_L'
    Par sancho.poncho dans le forum Général Python
    Réponses: 8
    Dernier message: 03/05/2013, 22h29
  2. Raccourcis clavier - Problème avec SCIM
    Par YannBubuntu dans le forum Bubuntu
    Réponses: 3
    Dernier message: 19/06/2008, 06h50
  3. Problème avec char
    Par choupinette116 dans le forum Débuter
    Réponses: 7
    Dernier message: 23/04/2008, 10h30
  4. Réponses: 22
    Dernier message: 05/07/2005, 00h04
  5. Réponses: 6
    Dernier message: 17/04/2005, 10h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo