Dúvidas de Java - Nível Totalmente Iniciante

8 respostas
Igor_Cordeiro

Problema: Calcular o prêmio (valor a ser pago pelo segurado) de um seguro de automóvel. No caso de carro de procedência nacional, o prêmio é de 10% do valor do veículo, enquanto que no caso de carros importados este percentual sobe para 15%. Sobre este valor é oferecido um desconto que depende da classe de desconto do segurado, a qual te a haver com o tempo de relacionamento do cliente com a seguradora (ver tabela abaixo). Sobre o mesmo valor anterior há ainda outro desconto de 10% caso o segurado tenha mais de 24 anos de idade.

Classe de Desconto Desconto
A 30%
B 20%
C 10%
D 5%
Implemente, então, um procedimento que leia:

<strong>o valor do veículo (um número real);</strong>

<strong>a classe de desconto (uma letra);</strong>

<strong>indicação se o carro é de procedência nacional (true) ou estrangeira (false);</strong>

<strong>indicação se o condutor tem mais de 24 anos (true ou false)</strong>

<strong>e imprima o valor do prêmio de seguro, arredondando o resultado na segunda casa decimal.</strong>

Algoritmo:

_import java.util.Scanner;

public class PremioDoSeguro {

public static void main (String args []) {
System.out.println ("Programa para Calcular o Valor do Seguro do Carro: ");

System.out.println ("Calcule o Preço do Veículo: ");
	Scanner sc = new Scanner (System.in);
           double valorDoVeiculo = sc.nextDouble();
    
      System.out.println ("Digite a Procedência do Veículo: true para Nacional; false para Importado.");
     boolean procedencia =  sc.nextBoolean();
    
    System.out.println ("Digite o Tipo de Cliente. Cliente A,B,C ou D");
    char tipoDeCliente = sc.nextLine().charAt(0);
    
    System.out.println("Digite a Idade do Condutor: ");
   int idadeDoCondutor = sc.nextInt();
	
	double valorPremioSeguroInicial = calcularValorPremioSeguroInicial(valorDoVeiculo, procedencia);        
    System.out.println(valorPremioSeguroInicial);
	
	double valorPremioSeguroMeio = calcularvalorPremioSeguroMeio (valorPremioSeguroInicial, tipoDeCliente);		
	System.out.println(valorPremioSeguroMeio);
	
	double valorPremioSeguroFinal = calcularvalorPremioSeguroFinal(valorPremioSeguroMeio, idadeDoCondutor);		_
	System.out.println(valorPremioSeguroMeio);
}
public static boolean calcularValorPremioSeguroInicial (double valorDoVeiculo, char procedencia) {

double valordoseguroinicial = 0.0;

if (procedencia == true) {

valordoseguroinicial = valorDoVeiculo * 0.10;

} else {
valordoseguroinicial = valorDoVeiculo * 0.15;      
  }

}
public static double calcularvalorPremioSeguroMeio (double valorPremioSeguroInicial, char tipoDeCliente) {

double valorPremioSeguroMeio = 0.0;

	switch(tipoDeCliente) {

		case 'A':
			valorPremioSeguroMeio = valorPremioSeguroInicial * 0.70;
			break;
			
		case 'B':
			valorPremioSeguroMeio = valorPremioSeguroInicial * 0.80;
			break;
			
		case 'C':
			valorPremioSeguroMeio = valorPremioSeguroInicial * 0.90;
			break;
			
		case 'D':
			valorPremioSeguroMeio = valorPremioSeguroInicial * 0.95;
			break;
			
		default:
			System.out.println("Código Inválido! Escreva A, B, C ou D");
			break;			
	}

    return valorPremioSeguroMeio;

}

public static double calcularvalorPremioSeguroFinal (double valorPremioSeguroMeio, int idadeDoCondutor) {

	if (idadeDoCondutor > 24) {_
       valordosegurofinal = valorPremioSeguroMeio * 0.9;  
	} else {
	   valordosegurofinal = valorPremioSeguroMeio;
	    }   
	return valordosegurofinal;_
	}

}

Por gentileza, alguém pode me ajudar a corrigir todo este Algoritmo?

8 Respostas

leofariasrj25

Sobre ajudar a corrigir todo o algoritmo, o que você já corrigiu? qual erro que está dando? não espere que alguém faça seu trabalho por você.

Igor_Cordeiro

Desculpa, eu esqueci de colocar onde está dando de errado:

PremioDoSeguro.java:138 error: incompatible types: boolean cannot be converted to char

double valorPremioSeguroInicial = calcularValorPremioSeguroInicial(valorDoVeiculo, procedencia);

^

PremioDoSeguro.java:151 error: incomparable types: char and boolean

if (procedencia == true) {

^

PremioDoSeguro.java:193 error: cannot find symbol

valordosegurofinal = valorPremioSeguroMeio * 0.9;

^

symbol:   variable valordosegurofinal

location: class PremioDoSeguro

PremioDoSeguro.java:195 error: cannot find symbol

valordosegurofinal = valorPremioSeguroMeio;

^

symbol:   variable valordosegurofinal

location: class PremioDoSeguro

PremioDoSeguro.java:197 error: cannot find symbol

return valordosegurofinal;

^

symbol:   variable valordosegurofinal

location: class PremioDoSeguro
leofariasrj25

Ta aqui o seu problema e o erro é bem explicativo, você está tentando comparar variáveis de tipos diferentes, procedencia é um char (‘a’, ‘b’, ‘m’, ‘-’, etc) e true é um valor booleano.

Igor_Cordeiro
<strong>Certo, e como se corrige:</strong>

public static boolean calcularValorPremioSeguroInicial (double valorDoVeiculo, char procedencia) {

double valordoseguroinicial = 0.0;
if (procedencia == true) {
	valordoseguroinicial = valorDoVeiculo * 0.10;

Como você já percebeu: Eu sou totalmente Iniciante em Java, tudo bem?

leofariasrj25

Altere o tipo da variável procedencia para boolean, e passe ao invés de um char indicado se o carro é estrangeiro ou nacional, um valor true q irá representar q o carro é nacional ou false indicando que é estrangeiro.

igomes
if (procedencia == true) // redudante if (procedencia) // faz a mesma coisa
Igor_Cordeiro

Certo. Muito obrigado. Corrigi e simplifiquei um pouco o código. Só tem mais uma linha que não estou conseguindo descobrir como consertar o erro. Ficou assim:

import java.util.Scanner;

public class PremioDoSeguro {

public static void main (String args []) {
	
	System.out.println ("Programa para Calcular o Valor do Seguro do Carro: ");
	
	System.out.println ("Calcule o Preço do Veículo: ");
	Scanner sc = new Scanner (System.in);
    double valorDoVeiculo = sc.nextDouble();
    
    System.out.println ("Digite a Procedência do Veículo: true para Nacional; false para Importado.");
    boolean procedencia =  sc.nextBoolean();
    
    System.out.println ("Digite o Tipo de Cliente. Cliente A,B,C ou D");
    char tipoDeCliente = sc.nextLine().charAt(0);
    
    System.out.println("Digite a Idade do Condutor: ");
    int idadeDoCondutor = sc.nextInt();

    **System.out.println(valordosegurofinal);** ( acontecendo um erro aqui, que não estou conseguindo descobrir qual é: não pode achar símbolo variável valordosegurofinal)
}

public static boolean calcularValorPremioSeguroInicial (double valorDoVeiculo, boolean procedencia) {
    double valordoseguroinicial = 0.0;
    
	if (procedencia == true) {
	valordoseguroinicial = valorDoVeiculo * 0.10;

} else {
	
    valordoseguroinicial = valorDoVeiculo * 0.15;      
    }
}
    
public static double calcularvalorPremioSeguroMeio (double valorPremioSeguroInicial, char tipoDeCliente) {
	
	double valorPremioSeguroMeio = 0.0;
	
	switch(tipoDeCliente) {
		
		case 'A':
			valorPremioSeguroMeio = valorPremioSeguroInicial * 0.70;
			break;
			
		case 'B':
			valorPremioSeguroMeio = valorPremioSeguroInicial * 0.80;
			break;
			
		case 'C':
			valorPremioSeguroMeio = valorPremioSeguroInicial * 0.90;
			break;
			
		case 'D':
			valorPremioSeguroMeio = valorPremioSeguroInicial * 0.95;
			break;
			
		default:
			System.out.println("Código Inválido! Escreva A, B, C ou D");
			break;			
	}
	
    return valorPremioSeguroMeio;			
}
    
public static double calcularvalorPremioSeguroFinal (double valorPremioSeguroMeio, int idadeDoCondutor) {
    double valordosegurofinal = 0.0;
    
	if (idadeDoCondutor > 24) {
       valordosegurofinal = valorPremioSeguroMeio * 0.9;  
	} else {
	   valordosegurofinal = valorPremioSeguroMeio;
	    }   
	return valordosegurofinal;
	}
}
O

Tenta alterar no seu método calcularvalorPremioSeguroFinal alterar as suas condicionais, para 1ª if, 2ª else if e por último else e o return dentro do else

Criado 14 de maio de 2016
Ultima resposta 10 de abr. de 2017
Respostas 8
Participantes 4