Problème avec Clavier.lireChar();

moutona2pis -  
neogenesis Messages postés 5303 Statut Contributeur -
Bonjour,
J'ai un problème avec un choix multiple, je fais ceci :
public class testeuh {

public static void main (String[] params) {
String numCarte;
char modePaiement;
System.out.println(" Entrez le mode de paiement, C : Comptant, D : Carte Débit,");
System.out.println("V : Carte Visa ou M : Carte Master Card : ");
modePaiement = Clavier.lireChar();
final char DEBIT = 'D';
final char VISA = 'V';
final char MASTER ='M';
switch (modePaiement){
case DEBIT :
System.out.println ("Entrer le numéro de la carte");
numCarte = Clavier.lireString();
break;
case VISA :
System.out.println("Entrer le numéro de la carte");
numCarte = Clavier.lireString();
break;
case MASTER :
System.out.println("Entrer le numéro de la carte:");
numCarte= Clavier.lireString();
break;
}

} // main

} // testeuh

Mais voilà, dès que j'utilise Clavier.lireChar(); ça compile mais lors de l'exécution, il ne prend pas en compte les lignes "numCarte= Clavier.lireString();". Si je le fais avec un Int (int modePaiement; et 1,2,3 à la place de D,V,M) ça marche nickel, mais bon dans mon énoncé ça doit être des caractères.
En fait dès que j'utilise Clavier.lireChar(); plus aucun Clavier.lireString(); qui suit dans mon programme n'Est pris en compte lors de l'éxécution (comme si ils n'étaient pas là).
Ça me fait la même chose avec :

public class testeeeeeuh {

// Autres méthodes s'il y a lieu

public static void main (String[] params) {
String numCarte;
char modePaiement;
System.out.println("Entrer ...");
modePaiement = Clavier.lireChar();

System.out.println("Entrer le numéro de la carte:");
numCarte = Clavier.lireString();

} // main

} // testeeeeeuh

Si quelqu'un pouvait m'expliquer pourquoi Clavier.lireChar(); "rend invisible" toutes tentative de Clavier.lireString(); qui suit.

Merci

3 réponses

neogenesis Messages postés 5303 Statut Contributeur 525
 
L'erreur provient du Switch. La valeur testée devrait être un entier, et dans votre cas il s'agit d'un char

Convertissez donc dans le switch les char en int (-> (int) charactere_a_convertir)
1
moutona2pis
 
Comme ceci ?
[...]
switch (modePaiement){
case (int)DEBIT :
[...]
Ça ne marche toujours pas :(

Dans mon 2eme cas de figure il n'y a pratiquement rien et mon Clavier.lireString(); est quand même ignorer :\.

Merci
0
neogenesis Messages postés 5303 Statut Contributeur 525
 
JE pense que le problème vient de LireChar alors, pouvez-vous donner cette méthode ?

J'ai déjà eu un problème similaire et pour capter un Char depuis un scanner je devais faire

char test = scanner.next().charAt(0);

Je pense que le problème se situe ici.
1
moutona2pis
 
Est-ce que le problème peut venir d'une corruption de l'installation de mon programme BlueJ ou de la JDK ?
J'irai demain tester sur un ordinateur de la fac'. Mais sans grand espoir.
0