Variável não se comporta como o esperado

8 respostas
F

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.

8 Respostas

nbluis

Dê um print nesse seu
in.nextLine()

Veja qual o primeiro caractere da sequencia…

F

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

Guilherme_Gomes

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

...
F

Que besteira a minha, é verdade.

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

papagaio

altere o code colocando aspas simples no case
assim :

#   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;  
#         }
papagaio

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

F

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

Guilherme_Gomes

filipe.almeida:
Que besteira a minha, é verdade.

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

Respondendo,

da uma olhada AQUI

Criado 26 de novembro de 2007
Ultima resposta 26 de nov. de 2007
Respostas 8
Participantes 4