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
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
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?
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 ++
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.
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:
Enjoy!
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); } }
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 :
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 :
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*/ } }
Je ne comprend pas ce message d'erreur.Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 0
at java.lang.String.charAt(Unknown Source)
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.
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.
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 = '';
}
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.
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 :
Voilà merci à tous pour votre aide.
Code : Sélectionner tout - Visualiser dans une fenêtre à part ope = clavier.next().toUpperCase().charAt(0);
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager