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!