Como concertar o if else?

Galera sou iniciante em java e me deparei com um probleminha, googlei, mas não encontrei a resposta.

Estou resolvendo esse exercicio:

Crie um programa em Java que leia um valor de temperatura da cor de uma lâmpada em Kelvin. Feito isto, informe ao usuário a cor correspondente a esta lâmpada.

de 0 a 1000 – Vermelho Intenso
de 1001 a 2000 – Luz de Velas
de 2001 a 4000 – Por do sol

o problema no meu codigo e que nao sei como ficar entre as datas:

public static void main(String[] args) {

    System.out.println("Digite um valor de temperatura da cor de uma lâmpada em Kelvin, de 0 até 9600: ");
    Scanner dados = new Scanner(System.in);
    double num = dados.nextInt();
    
    if(num == 0 ||(num<=1000) ){
        System.out.println("Essa é a cor: vermelho intenso!");           
    }else if(num  == 1001 ||(num>=2000) ){
        System.out.println("Essa é a cor: Luz de velas!");
    }else if(num == 2001 ||(num>=4000) ){
        System.out.println("Essa é a cor: POr do sol!");      
    }else if(num == 4001 ||(num>=5000) ){
        System.out.println("Essa é a cor: lâmpada Fluorescente!");    
    }else if(num == 5001 ||(num>=6500) ){
        System.out.println("Essa é a cor: Luz do meio dia!");
    }else if(num == 6501 ||(num>=8000) ){
        System.out.println("Essa é a cor: Céu azul!");
    }else{
        System.out.println("Valor Invalido!!");
        
    }

Aparece sempre a primeira, como posso realizar esse espaçamento entre dados?

Você faz um dados.nextInt() e atribui essa informação num double? tinha que ser um int.

1 curtida

Troca o double pelo int.

int num = dados.nextInt();

O primeiro if você pode encurtar ele colocando apenas:

if(num<=1000)

1 curtida

Olá Carlos. Existe alguns erros no seu código. Vamos lá. Você começou e terminou seu código com as condições contendo os operadores de (== igual) , (| | ou) e em seguida usou (>= maior ou igual), onde na verdade o correto é usar da seguinte forma;

if(num > 0 && num <=1000) {

nesse caso estamos dizendo que a condição é que SE o número for MAIOR que 0 (&& -> E) MENOR OU IGUAL a 1000. veja que usamos o && e não o | | (ou)…
Isso serve pra todas as outras condições…
E mais uma coisa, nesse caso você poderia usar INT , não seria necessário DOUBLE.
abaixo está o código correto, só faltou mais atenção.

System.out.println("Digite um valor de temperatura da cor de uma lâmpada em Kelvin, de 0 até 9600: ");
    Scanner dados = new Scanner(System.in);
    int num = dados.nextInt();
    
    if(num > 0 && num <= 1000 ){
        System.out.println("Essa é a cor: vermelho intenso!");           
    }else if(num > 1000 &&  num <= 2000 ){
        System.out.println("Essa é a cor: Luz de velas!");
    }else if(num > 2000 && num <= 4000 ){
        System.out.println("Essa é a cor: POr do sol!");      
    }else if(num > 4000 && num <= 5000 ){
        System.out.println("Essa é a cor: lâmpada Fluorescente!");    
    }else if(num > 5000 && num <= 6500 ){
        System.out.println("Essa é a cor: Luz do meio dia!");
    }else if(num > 6500 && num<=8000 ){
        System.out.println("Essa é a cor: Céu azul!");
    }else{
        System.out.println("Valor Invalido!!");
1 curtida

Aproveitando o exemplo que o @Emanuel_Vitor deu, daria pra simplificar ainda mais as condições, veja:

if (num <= 1000) {
    System.out.println("Essa é a cor: vermelho intenso!");
} else if (num <= 2000) {
    System.out.println("Essa é a cor: Luz de velas!");
} else if (num <= 4000) {
    System.out.println("Essa é a cor: POr do sol!");
} else if (num <= 5000) {
    System.out.println("Essa é a cor: lâmpada Fluorescente!");
} else if (num <= 6500) {
    System.out.println("Essa é a cor: Luz do meio dia!");
} else if (num <= 8000) {
    System.out.println("Essa é a cor: Céu azul!");
} else {
    System.out.println("Valor Invalido!!");
}
1 curtida

pois é eu esqueci de mudar essa parte.

Obrigado pela ajuda.

1 curtida

Obrigado pela dica.

1 curtida