Erro de lógica I,preciso de ajuda.[RESOLVIDO]

7 respostas
garotinhodejesus

Ola pessoal estou com tres programas que compilam,mais na hora do teste de mesa eles dão erro.
o primeiro é esse;
enunciado:
Um cliente faz uma compra em determinada loja.
A loja possui a seguinte política de descontos:
-Se o valor total da compra for maior do que R$ 500,00 o cliente ganha um desconto de 7%.
-Se a quantidade comprada for maior do que 10 o cliente ganha 5% de desconto.
Construa uma aplicação em Java que receba o valor de um produto, a quantidade comprada
e imprima o valor da compra seguindo a política de descontos da loja.

public class Exercicio11{
    public static void main(String[]args){
    String aux;
    double valor, quantidade, valorfinal;
    double desc1=0;
    double desc2=0;
    
    aux = JOptionPane.showInputDialog("Digite o valor do produto: ");
    valor = Double.parseDouble(aux);

      if(valor>50)
      {
         desc1 = (valor*7)/100;       
      }

    aux = JOptionPane.showInputDialog("Digite a qantidade do produto: ");
    quantidade= Double.parseDouble(aux);

       
    if (quantidade>10)
    {
      desc2 = (valor*5)/100;
    }
   
      valorfinal = ((valor - desc1) - desc2)*quantidade;

      System.out.println(+valorfinal);

  }
}

com o valor de salario de 50.0 e a quantidade de 10.01 o resultado esperado era 440.44,mais esta dando o resultado de 475.[telefone removido].
Preciso de ajuda nesse codigo.

7 Respostas

J

http://www.guj.com.br/java/26764-mathceil

Scoobydoo

Tem que analisar o seguinte…

Se eu ganhar as 2 bonicações… seriam 12% de desconto ?

Porque o resultado ali esta certinho…
OBS: Mano

if(valor>50)  //Aqui esta só maior..... para dar 440 seria => !

OBS; Valor é 500,00 e não 50… Ta na questão…

garotinhodejesus

sim seria 12% de desconto no valor inicialmente dado pra mim.

Scoobydoo

Tua aplicação esta certa, tirando o valor > 50 que na verdade é valor > 500

Quem corrigiu errado provavelmente foi o professor, porque ele disse que o desconto é para vendas maiores que 500 reais e não maior ou igual a 500 reais…

Para ficar do jeito que seu instrutor(provavelmente) pediu, basta voce arrumar a condição

if(valor=>500)   
      {   
         desc1 = (valor*7)/100;         
      }
Rafael_Mesquita_Mour

Olá garotinhodejesus, vi sua aplicação e entendi a funcionalidade dela. É o seguinte, a sua aplicação está com um erro de lógica na seguinte linha:

if(valor>50)  
      {  
         desc1 = (valor*7)/100;         
      }

Pelo que entendi, a sua aplicação só deve dar esse desconto de 7% caso o total da compra seja maior que R$ 500,00. Na linha acima, o desconto será dado, caso o Valor do Produto seja maior que 50 (ou 500, tanto faz).

Para corrigir, você precisará criar uma variável que receba o valor total da compra antes de aplicar os descontos, e depois verificar se o valor total da compra é maior que R$ 500,00.

Segue exemplo:

double desc1 = 0;
double desc2 = 0;
	double totalDaCompra = 0;
	
	Scanner in = new Scanner(System.in);

	System.out.print("Digite a quantidade de produtos: ");
	int qntDeProdutos = in.nextInt();

	System.out.print("Digite o valor do produto: ");
	double valorDoProduto = in.nextDouble();

	if(qntDeProdutos > 10){
		desc1 = valorDoProduto * 0.05;
	}

	totalDaCompra = (qntDeProdutos * valorDoProduto) - desc1;

	if(totalDaCompra > 500){
		desc2 = totalDaCompra * 0.07;
	}

	totalDaCompra = totalDaCompra - desc1 - desc2;
        System.out.println("Total da Compra: " + totalDaCompra);

}

Espero ter ajudado =)

garotinhodejesus

Gente obrigado. codigo concluido!

Rafael_Mesquita_Mour

Edite o seu primeiro tópico colocando a tag [RESOLVIDO] na frente. =)

Criado 16 de março de 2011
Ultima resposta 17 de mar. de 2011
Respostas 7
Participantes 4