Problemas pegando caracter / JAVA

2 respostas
A

Bom dia,
Estou tendo um problema pegando caracter do teclado com o System.in.read(); gravando esse caracter numa variável “int” para depois verificar num switch(); fazendo tipo um menu de opções. O q acontece eh q qdo o switch(); verifica a variável ele executa a opção recebida do teclado mas depois gera opções inválidas no “default” do switch(); essas opções se referem aos códigos ASC II das teclas pressionadas.
Ex:
se eu teclo o número 1, o switch executa esta opção normalmente, mas depois de terminado em vez de esperar novas opções ele executa o número 49, 10 e 13; respectivamente código ASC II da tecla 1 e códigos ASC II da tecla <ENTER>.
Qdo eu faço o mesmo com readLine(); e depois converto de String para int ele naim executa opção nenhuma. ALguém poderia me ajudar, por favor?
um pequeno trecho do código abaixo:




int op;

String sOp = new String();

BufferedReader ent;

ent = new BufferedReader(new InputStreamReader(System.in));
try {

op = System.in.read();

//	sOp = ent.readLine();

//	op = Integer.parseInt(sOp);

System.out.println(op);

System.out.println(sOp);

}

catch (IOException e) {

System.out.println(e);

}

switch (op) {
case ‘1’ : …
case ‘2’ : …
default : …
}…

obrigado,
Alex

2 Respostas

N

Não use o método System.in.read() pq ele vai te retornar o valor ASC de tudo oq receber. Quando vc tecla 1, ele recebe 49 (valor asc do 1), 10 (quebra de linha) e 13 (retorno de carro). Segue uma solução possível:

BufferedReader buffer = new BufferedReader(new InputStreamReader(System.in));
char c = (char)buffer.read();

Vc pode usar o readLine di BufferedReader e converter usando Integer.parseInt(), por exemplo.

A

Valew Neto,
obrigado pela força kra!!!

Alex. :lol:

Criado 4 de novembro de 2003
Ultima resposta 5 de nov. de 2003
Respostas 2
Participantes 2