Solucionado (ver solução)

Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

Solucionado
(ver solução)
3
respostas

ex 05

public class CadastroLivros {
    public static void main(String[] args) {

        String titulo = "Alien";
        String autor = "João Silva";
        int numeroPaginas = 440;
        double preco = 119.90;
        char categoria = 'F';

        String categoriaLivro;

        if (categoria == 'T'){
            categoriaLivro = "Ficção";
        } else if (categoria == 'N') {categoriaLivro = "Não-Ficção";
        } else if (categoria == 'T') {
            categoriaLivro = "Tecnologia";
        } else {
            categoriaLivro = "História";
        }

        System.out.printf("Título: %s | Autor: %s | Páginas: %d |Preço: R$ %.2f | Categoria: %s",  titulo, autor, numeroPaginas,preco, categoriaLivro);

    }
}
3 respostas

Oii João, tudo bem?

Dando uma olhada no seu código, acredito que possa haver alguns pequenos detalhes. Como a sua variável categoria foi iniciada com o valor 'F', me parece que o código está caindo direto no else e exibindo "História" por não encontrar uma verificação específica para essa letra.

Outro ponto é que a letra 'T' talvez esteja repetida nas verificações. Como a leitura é feita de cima para baixo, acredito que a condição de "Tecnologia" acabe não sendo alcançada, já que o primeiro if com o 'T' deve capturar a execução antes.

Dá uma olhadinha em como o fluxo parece estar se comportando:

if (categoria == 'T'){        // Talvez a intenção aqui fosse o 'F'?
    categoriaLivro = "Ficção";
} else if (categoria == 'N') {
    categoriaLivro = "Não-Ficção";
} else if (categoria == 'T') {  // Como o 'T' já apareceu acima, o código pode não chegar aqui
    categoriaLivro = "Tecnologia";
} else {
    categoriaLivro = "História"; 
}

Acredito que, se você fizer um pequeno ajuste para alinhar a letra correspondente a cada bloco (por exemplo, testando o 'F' no primeiro if), o código deva funcionar certinho como você espera.

Tenta fazer essa alteração e me conta o resultado!

Conte com a Alura para evoluir seus estudos. Em caso de dúvidas, fico à disposição.

Bons estudos!

Sucesso

Imagem da comunidade
import java.util.Scanner;

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

        String titulo = "Alien";
        String autor = "João Silva";
        int numeroPaginas = 440;
        double preco = 119.90;

        System.out.println("Escolha uma categoria para os livros (F, N, T, H: ");
        char categoria = scanner.next().charAt(0);

        String categoriaLivro;

        if (categoria == 'F'){
            categoriaLivro = "Ficção";
        } else if (categoria == 'N') {categoriaLivro = "Não-Ficção";
        } else if (categoria == 'T') {
            categoriaLivro = "Tecnologia";
        } else {
            categoriaLivro = "História";
        }

        System.out.printf("Título: %s | Autor: %s | Páginas: %d |Preço: R$ %.2f | Categoria: %s",  titulo, autor, numeroPaginas,preco, categoriaLivro);

    }
}
solução!

Oii João!

Valeu por compartilhar o código atualizado!

Bom trabalho em identificar e corrigir os erros!

Conte com a Alura para evoluir seus estudos. Em caso de dúvidas, fico à disposição.

Bons estudos!