Variável não se comporta como o esperado

Estou alterando por partes (a título de exercício) um programinha em java que eu fiz e mostrei em meu último post (http://www.guj.com.br/posts/list/74470.java), e reescreví parte do programa com o seguinte código:

/**
 * Title   : AdvLtr.java
 * Author  : Filipe Jardim de Almeida 
 * Version : 4.00
 * Date    : 23/11/2007
 */
import java.util.Scanner;

public class AdvLtr {
    public static void main(String[] args) {
        System.out.println("Jogo \"Adivinhe a letra\" V 4.0");
        System.out.println("Por: Filipe Jardim de Almeida \n");
        System.out.println("Escolha a sua dificuldade:\n");
        System.out.println("Fácil\t(1)");
        System.out.println("Médio\t(2)");
        System.out.println("Difícil\t(3)");
        
        int i;
        int difNum = 0;
        
        Scanner in = new Scanner(System.in);
        char difSel = in.nextLine().charAt(0);
        
        switch(difSel) {
        	case 1:
        		difNum = 15;
        		System.out.println("Você tem 15 tentatívas:");
        		break;
        	case 2:
        		difNum = 10;
        		System.out.println("Você tem 10 tentatívas:");
        		break;
        	case 3:
        		difNum = 5;
        		System.out.println("Você tem 05 tentatívas:");
        		break;
        }
        System.out.println(difNum);
    }
}

Estou apenas testando as possibilidades (por isso ainda não está completo), mas a variável “difNum” não está se comportando de forma esperada, segue a saída do programa:

Jogo “Adivinhe a letra” V 4.0
Por: Filipe Jardim de Almeida

Escolha a sua dificuldade:

Fácil (1)
Médio (2)
Difícil (3)
1
0

Process completed.

Aparentemente, ela não recebe os valores do “case”, mas porque?
Obrigado por qualquer ajuda.

Dê um print nesse seu
in.nextLine()

Veja qual o primeiro caractere da sequencia…

Desculpe, mas sou iniciante em java, oque exatamente você quer dizer?

O char 1 é diferente do char ‘1’, o char 1 é o “start of heading”.

Para entender o que estou falando, eis a tabela ascii:
http://www.asciitable.com/

Voce pode usar no seu programa o case assim:

case '1' :
....

ou

case 31: //código ascii para 1
...
case 32: //código ascii para 2

...

Que besteira a minha, é verdade.

Mas tenho ainda uma outra dúvida eu poderia fazer esse case lendo um inteiro do teclado?

altere o code colocando aspas simples no case
assim :

[code]# switch(difSel) {

case ‘1’:

difNum = 15;

System.out.println(“Você tem 15 tentatívas:”);

break;

case ‘2’:

difNum = 10;

System.out.println(“Você tem 10 tentatívas:”);

break;

case ‘3’:

difNum = 5;

System.out.println(“Você tem 05 tentatívas:”);

break;

} [/code]

Que besteira a minha, é verdade.

Mas tenho ainda uma outra dúvida eu poderia fazer esse case lendo um inteiro do teclado?

é soh criar uma variavel int q recebera o inteiro da tela
e faser a comparação com a opção no case

na verdade, eu já tinha tentado isso… por qlgum motivo não tinha ddo certo…

[quote=filipe.almeida]Que besteira a minha, é verdade.

Mas tenho ainda uma outra dúvida eu poderia fazer esse case lendo um inteiro do teclado?[/quote]

Respondendo,

da uma olhada AQUI