Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Desafio: Calculando valor da entrega

package estudos;

import java.util.Scanner;

public class Calculator {
    
       public static double calcularTaxa (double distancia, boolean chovendo){
        double taxa;
        //processsamento
        if (distancia <= 5 )
            {taxa = 5.00; }			
        else if (distancia > 5 || distancia <= 10) 
            {taxa = 8.00; } 
        else 
            {taxa = 10.00;}
    
        if (chovendo) 
            {taxa += 2.00;}
        
        return taxa; 		
    }

public static void main (String [] args) {
        Scanner Leitura = new Scanner(System.in);
        //entrada
        System.out.print("Diga sua a distancia: //exemplo: 5 km");
        double distancia = Leitura.nextDouble();
         
        
        System.out.print("Está chovendo? (sim/não): ");
        String resposta = Leitura.next().toLowerCase(); 
        boolean chovendo = resposta.equals("Nao"); 
        
        double valor_final = calcular_taxa(distancia, chovendo);
        
        System.out.println("Taxa de entrega: R$ " + valor_final);
        //saida
        Leitura.close();
    }
}
1 resposta
solução!

Olá, Otavio. Como vai?

O seu código em Java está muito bem estruturado! É excelente ver que você já está dividindo o seu programa em métodos separados (calcularTaxa) e utilizando o Scanner para capturar as entradas do usuário em tempo real. Essa organização é uma ótima prática de desenvolvimento.

Ao analisar o comportamento do seu programa, existem três detalhes importantes na lógica e na sintaxe que precisam de um pequeno ajuste para que o código funcione perfeitamente e sem erros. Vamos vê-los:

  • O operador lógico OU (||) na distância: Na linha else if (distancia > 5 || distancia <= 10), você utilizou o operador "OU". Da forma como está, se a distância for 20, ela é maior que 5, o que torna a condição verdadeira e aplica a taxa de R$ 8.00 erroneamente. O correto para verificar um intervalo (entre 5 e 10) é usar o operador E (&&).
  • A lógica da chuva: Na linha boolean chovendo = resposta.equals("Nao");, a variável chovendo receberá o valor true (verdadeiro) se o usuário responder "nao". Ou seja, o programa vai cobrar a taxa extra de chuva justamente quando não estiver chovendo. Precisamos mudar para "sim".
  • Chamada do método no Main: No Java, os nomes dos métodos diferenciam letras maiúsculas de minúsculas e sublinhados. Você criou o método como calcularTaxa (em camelCase), mas tentou chamá-lo no main como calcular_taxa. Isso causará um erro de compilação.

Para ajustar esses pontos, veja como o seu código corrigido e limpo deve ficar:

package estudos;

import java.util.Scanner;

public class Calculator {
    
    public static double calcularTaxa(double distancia, boolean chovendo) {
        double taxa;
        
        // Correção do intervalo usando o operador E (&&)
        if (distancia <= 5) {
            taxa = 5.00;
        } else if (distancia > 5 && distancia <= 10) {
            taxa = 8.00;
        } else {
            taxa = 10.00;
        }
    
        if (chovendo) {
            taxa += 2.00;
        }
        
        return taxa;         
    }

    public static void main(String[] args) {
        Scanner Leitura = new Scanner(System.in);
        
        System.out.print("Diga sua a distancia (em km): ");
        double distancia = Leitura.nextDouble();
         
        System.out.print("Está chovendo? (sim/não): ");
        String resposta = Leitura.next().toLowerCase(); 
        
        // Correção para identificar a chuva quando o usuário digita "sim"
        boolean chovendo = resposta.equals("sim"); 
        
        // Correção do nome do método para calcularTaxa
        double valor_final = calcularTaxa(distancia, chovendo);
        
        System.out.println("Taxa de entrega: R$ " + valor_final);
        
        Leitura.close();
    }
}

Uma dica extra de boa prática: repare que na estrutura do if/else, quando usamos chaves {}, costumamos quebrar a linha para deixar o código visualmente mais espaçado e fácil de ler, ajudando na manutenção do software no futuro.

Parabéns pelo desafio, criar essa estrutura completa em Java não é simples e você mandou muito bem!

Espero que possa ter lhe ajudado!