[Java J2SE] debutant , probleme switch case

Fermé
Christophe_06 Messages postés 1 Date d'inscription mardi 6 février 2007 Statut Membre Dernière intervention 6 février 2007 - 6 févr. 2007 à 15:04
 ray - 12 févr. 2007 à 09:59
Bonjour,

Voila plusieurs heures que j'essaie des methodes differentes pour résoudre mon switch case qui a une erreur.

L'objectif étant pour le moin simple de retourner si la touche appuyée par le clavier est une consonne ou une voyelle.

Cepandant le probleme réside dans le fait que VALa n'est pas reconnue comme valeur constante et donc pas accepter par le case.

	        int x;
		char s;
		final int VALa = Integer.parseInt("a");
		System.out.println("tapez une lettre au clavier");
		x = System.in.read();
		s = (char)x;
		switch(x){
			case VALa : System.out.println("Vous avez taper: "+s);
				    System.out.println("C'est une voyelle");
				    break;

                etc....


Merci de me répondre pour m'expliquer mon erreur ou autres conseils.

Christophe.
A voir également:

2 réponses

Utilisateur anonyme
10 févr. 2007 à 19:07
Salut!

Tu trouveras ci-dessous un petit exemple de 'switch' avec une lecture de caractères au clavier.

Pour plus d'infos sur les caractères, je te conseille de jeter un oeil dans la classe java.lang.Character

import java.io.IOException;

/**
 * Created on 10-févr.-07
 * 
 * @author: HackTrack (philippe.fery@gmail.com)
 */

public class SwitchDemo {
	public static final char[] VOYELLES = { 'a', 'e', 'i', 'o', 'u', 'y' };

	public static final char[] CONSONNES = { 'b', 'c', 'd', 'f', 'g', 'h', 'j', 'k', 'l', 'm', 'n', 'p', 'q', 'r', 's', 't', 'v', 'w', 'x',
			'z' };
	
	public static final char QUIT_CHARACTER = '&';

	private static final int TYPE_VOYELLE = 1;

	private static final int TYPE_CONSONNE = 2;

	private static final int AUTRE_TYPE = 3;

	private boolean isRunning;

	public SwitchDemo() {
		super();
	}

	public int getSymbolType(char c) {
		for (int i = 0; i < VOYELLES.length; i++) {
			if (c == VOYELLES[i])
				return TYPE_VOYELLE;
		}
		for (int i = 0; i < CONSONNES.length; i++) {
			if (c == CONSONNES[i])
				return TYPE_CONSONNE;
		}
		return AUTRE_TYPE;
	}

	public void startListeningKeyboard() throws IOException {
		isRunning = true;
System.out.println("Appuyer sur '"+QUIT_CHARACTER+"' pour quitter");
		while (isRunning) {
			char c = (char) System.in.read();
			if (Character.getType(c) != 15) {//Le caractère de retour à la ligne est ignoré
				switch (getSymbolType(c)) {
				case TYPE_VOYELLE:
					System.out.println("Le caractère '" + c + "' est une voyelle");
					break;
				case TYPE_CONSONNE:
					System.out.println("Le caractère '" + c + "' est une consonne");
					break;
				case AUTRE_TYPE:
					System.out.println("Le caractère '" + c + "' n'est ni une voyelle ni une consonne");
					if (c == QUIT_CHARACTER)
						isRunning = false;// condition d'arrêt de la boucle
					break;
				}
			}
		}
	}


	public static void main(String[] args) {

		SwitchDemo demo = new SwitchDemo();
		try {
			demo.startListeningKeyboard();
		} catch (IOException e) {
			System.out.println("Une erreur est survenue lors de la lecture clavier");
		}
		System.out.println("Lecture clavier terminée");
	}
}



;-)
HackTrack
0
Salut si tu es debutant en java les codes que tu as recu devrait etre trop compliqués pour toi voici un exemple plus simple:
soit tu utilises le case soit un if suffira...

import java.io.*;
public class LectureVoyelles{
public BufferedReader in=new BufferedReader(new InputStreamReader(System.in));
protected String s=null;
public char readChar(String expression) throws IOException{
System.out.print(expression);
s=in.readLine();
if(s.length()==1){
System.out.println();
return s.charAt(0);
}
else return readChar(expression);
}
public void voyelles() throws IOException{
char c=readChar("tapez un caractere : ");
switch(c){
case 'a':
case 'e':
case 'i':
case 'o':
case 'u':
case 'y':System.out.println("vous avez entre une voyelle :"+c);
break;
default:System.out.println("Vous avez entre un comsonne :"+c);
break;
}
/*if(c=='a'||c=='e'||c=='i'||c=='o'||c=='u'||c=='y'){
System.out.println("vous avez entre une voyelle :"+c);
return;
}
else{
System.out.println("Vous avez entre un comsonne :"+c);
return;
}*/
return;
}
public static void main(String args[])throws IOException{
LectureVoyelles lv=new LectureVoyelles();
lv.voyelles();
return;
}
}

donc il te suufit seulement d'écrire une methodes readChar qui te lit un string à l'écran et le transforme en caractere mais pour que cela marche il faut imposer la longeure de du stringà 1 sinon il va prendre "av" pour une voyelle... compile le et tiens moi au courant.
I am the god father.
0