Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

The Oicle

Java não aceita if dentro de outro if?

Recommended Posts

Múltipla escolha 1 - Elaborar uma questão de múltipla escolha, de uma disciplina que esteja
cursando ou um tema de interesse, com um enunciado e cinco alternativas, sendo uma correta ou
incorreta. Escrever um programa que mostra a questão na tela, pede a resposta correta e informa ao
usuário se este acertou ou errou.
Enriqueça o programa acima da questão de múltipla escolha, incluindo
uma outra questão de outro tema. No início do programa, ofereça ao usuário a escolha de qual
questão quer responder.
Algoritmo:

import java.util.Scanner;


public class ideia312 {
    public static void main(String args[]){
        Scanner entrada = new Scanner(System.in);
        String a = "A";
        String b = "B";
        String c = "C";
        // 1° questão
        System.out.println("1- Quantos é dois mais dois elevado a seis?");
        System.out.println(a+") 93.22");
        System.out.println(b+") 100");
        System.out.println(c+") 30082");
         
        //2° Questão
        System.out.println("2- quantos é 12 dividido 3 elevado a 9");
        System.out.println(a+") 93.22");
        System.out.println(b+") 100");
        System.out.println(c+") 30082");
        
        //escolhe a pergunta
        System.out.println("Deseja responder a questão 1 ou 2?");
        int d = entrada.nextInt();
        
        if(d==1){
            
            System.out.println("Please responda: ");
            String e = entrada.nextLine();
            if(e.equals("c") || e.equals("C")){
                System.out.print("Você acertou!");
            }else{
                System.out.print("Você errou!");
            }
        }
        
        if(d==2){
            
            System.out.println("Please responda: ");
            String e = entrada.nextLine();
            if(e.equals("a") || e.equals("A")){
                System.out.println("Você acertou!");
            }else{
                System.out.println("Você errou!");
            }
        }
    }
}

Resultado:

1- Quantos é dois mais dois elevado a seis?
A) 93.22
B) 100
C) 30082
2- quantos é 12 dividido 3 elevado a 9
A) 93.22
B) 100
C) 30082
Deseja responder a questão 1 ou 2?
2
Please responda: 
Você errou!

Ele não aceita um if dentro de outro if

 

Porquê???

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Provavelmente o scanner está segurando lixo, porque não tem nada de errado no código.

Tente isto:

//escolhe a pergunta
System.out.println("Deseja responder a questão 1 ou 2?");
int d = entrada.nextInt();
entrada.nextLine(); // vê se resolve...

E uma dica, aqui:

if(e.equals("a") || e.equals("A")){}

Ao invés de fazer duas comparações você pode reduzir para:

if(e.toLowerCase().equals("a")){}

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Provavelmente o scanner está segurando lixo, porque não tem nada de errado no código.

Tente isto:

//escolhe a pergunta
System.out.println("Deseja responder a questão 1 ou 2?");
int d = entrada.nextInt();
entrada.nextLine(); // vê se resolve...

E uma dica, aqui:

if(e.equals("a") || e.equals("A")){}

Ao invés de fazer duas comparações você pode reduzir para:

if(e.toLowerCase().equals("a")){}

 

Ou .equalsIgnoreCase()

Compartilhar este post


Link para o post
Compartilhar em outros sites

É o velho problema do \n na entrada padrão:

http://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html#nextLine()

import java.util.Scanner;

public class Teste {
    public static void main(String args[]){
        Scanner entrada = new Scanner(System.in);

        // 1° questão
        System.out.println("1- Quantos é dois mais dois elevado a seis?");
        System.out.println("A) 93.22");
        System.out.println("B) 100");
        System.out.println("C) 30082");

        //2° Questão
        System.out.println("2- quantos é 12 dividido 3 elevado a 9");
        System.out.println("A) 93.22");
        System.out.println("B) 100");
        System.out.println("C) 30082");

        //escolhe a pergunta
        System.out.println("Deseja responder a questão 1 ou 2?");
        int escolha = Integer.parseInt(entrada.nextLine());

        if (escolha != 1 && escolha != 2) {
        	System.err.println("Opção inválida");
        } else {
        	System.out.print("Resposta: ");
        	String resp = entrada.nextLine();

        	if ((escolha == 1 && "c".equalsIgnoreCase(resp)) || (escolha == 2 && "a".equalsIgnoreCase(resp))) {
        		System.out.println("Você acertou.");
        	} else {
        		System.out.println("Você errou.");
        	}
        }
     }
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.