Erro de lógicaIII, preciso de ajuda.[RESOLVIDO]

11 respostas
garotinhodejesus

enunciado:
Os vendedores de uma empresa que possuem um salário base de até R$700,00 (inclusive), ganham uma comissão de 4.5% sobre suas vendas.
Se o volume de vendas for maior do que R$15.000,00 ganham uma bonificação de 1.2% sobre as vendas.
Construa uma aplicação que receba o valor do salário base e o valor das vendas desse vendedor.
Calcule e mostre o salário final.

public class Exercicio15{
    public static void main(String[]args){
    
    String aux;
    double salario, vendas;

    aux = JOptionPane.showInputDialog("Digite o valor do salario: ");
    salario = Double.parseDouble(aux);
    aux = JOptionPane.showInputDialog("Digite o valor das vendas: ");
    vendas = Double.parseDouble(aux);

    if (vendas<15.000)

    { 
      salario = salario + ((salario*4.5)/100);
    }


    else if (salario>15.000)
   
    {
      salario = salario + ((salario *5.7)/100);
    }

     System.out.println(+salario);

   }
}

Para o salário 100.0 e as vendas 1000 a saída esperada é 145.0 e a encontrada foi 105.7. Verifique o seu if e lembre-se de imprimir somente o salário atualizado! expected:<105.7> but was:<145.0>

11 Respostas

Scoobydoo
public class Exercicio15{   
    public static void main(String[]args){   
       
    String aux;   
    double salario, vendas;   
  
    //aux = JOptionPane.showInputDialog("Digite o valor do salario: ");  VOCE JA SABE O SALARIO BASE = 700  
    salario = 700;
    aux = JOptionPane.showInputDialog("Digite o valor das vendas: ");   
    vendas = Double.parseDouble(aux);   
  
    if (vendas<15.000)   //Aqui é vendas e não salário..
  
    {   
      salario = salario + ((salario*45/100);     }     
  
    else if (vendas>15.000)   
     
    {   
      salario = salario + ((salario *57/100);   
    }   
  
     System.out.println(+salario);   
  
   }   
}
garotinhodejesus

O salario não é de 700,00 como base, é de ate 700,00.

Scoobydoo

Então só modifique aqui…

else if (vendas>15.000)
garotinhodejesus

resposta agora é:

Para o salário 100.0 e as vendas 1000 a saída esperada é 145.0 e a encontrada foi 105.7. Verifique o seu if e lembre-se de imprimir somente o salário atualizado!

Mapper

na linha 15 esta assim:

salario = salario + ((salario*45/100);   //Ajuste seu calculo de Porcentagem...

pelo enunciado deveria estar assim:

salario = salario + ((vendas*45/1000);   //Ajuste seu calculo de Porcentagem...

pois a comissao é sobre as vendas e 45/100 e 45% !!!

A linha 21 mudaria de:

salario = salario + ((salario *57/100);

para :

salario = salario + (salario * 12/1000) + (vendas * 45/1000);

pois o bonus, pelo que entendi e sobre o salario, e continua sendo devida a comissão cumulativamente

Scoobydoo

Cara tu não fez as modificações que eu pedi…
Olha denovo

garotinhodejesus

mano eu fiz e resultado do erro é esse agora
Para o salário 100.0 e as vendas 1000 a saída esperada é 145.0 e a encontrada foi 146.2. Verifique o seu if e lembre-se de imprimir somente o salário atualizado! expected:<146.2> but was:<145.0>

public class Exercicio15{
    public static void main(String[]args){
    
    String aux;
    double salario, vendas;

    aux = JOptionPane.showInputDialog("Digite o valor do salario: ");
    salario = Double.parseDouble(aux);
    aux = JOptionPane.showInputDialog("Digite o valor das vendas: ");
    vendas = Double.parseDouble(aux);

    if (vendas<15.000)

    { 
      salario = salario + (vendas*45/1000);
    }


    else if (vendas>15.000)
   
    {
      salario = salario + (salario *12/1000) + (vendas*45/1000);
    }

     System.out.println(+salario);

   }
}
Scoobydoo

Mano… cuida com as variaveis que você usa…
Segue

if (vendas<15.000)   
  
    {   
      salario = salario + (vendas*45/1000);   
    }   
  
  
    else if (vendas>15.000)   
     
    {   
      salario = salario + (salario *12/1000) + (vendas*45/100); // aqui é    (vendas *12/1000)
    }

Verifica porque ele esta adicionando +12%…

rfsilva
garotinhodejesus:
mano eu fiz e resultado do erro é esse agora Para o salário 100.0 e as vendas 1000 a saída esperada é 145.0 e a encontrada foi 146.2. Verifique o seu if e lembre-se de imprimir somente o salário atualizado! expected:<146.2> but was:<145.0>
public class Exercicio15{
    public static void main(String[]args){
    
    String aux;
    double salario, vendas;

    aux = JOptionPane.showInputDialog("Digite o valor do salario: ");
    salario = Double.parseDouble(aux);
    aux = JOptionPane.showInputDialog("Digite o valor das vendas: ");
    vendas = Double.parseDouble(aux);

    if (vendas<15.000)

    { 
      salario = salario + (vendas*45/1000);
    }


    else if (vendas>15.000)
   
    {
      salario = salario + (salario *12/1000) + (vendas*45/1000);
    }

     System.out.println(+salario);

   }
}

Uma observação:
Se o salário BASE é de 700, significa que só ganham qualquer bonificação quem tem salário igual ou superior a 700, correto?
Pode confirmar?

Considerando o TETO de 700:

if (salario <= 700) {
            salario += ((vendas * 4.5) / 100.0);
            
            if (vendas > 15000) {
                salario += ((vendas * 1.2 ) / 100.0);
            }
        }

Considerando o PISO de 700:

if (salario >= 700) {
            salario += ((vendas * 4.5) / 100.0);
            
            if (vendas > 15000) {
                salario += ((vendas * 1.2 ) / 100.0);
            }
        }
Mapper

Não testei a solução do colega rfsilva, mas parece ser funcional.

O seu código também funcionará ! basta retirar o ponto separando as milhares no valor 15000.

Na comparação ele ignorava o que estava após o ponto.

O if sempre dava que as vendas eram maiores que 15.000 pois na verdade o java entendia 15.

Muda ai e fala se deu certo.

rafaelviny

Mapper

pois é

lembrando que nos Estados Unidos a virgula é nosso ponto e o ponto é nossa virgula

la é 15,000.00

aqui 15.000,00

nao me lembro bem como se chama isso, mas tem um nome

Criado 16 de março de 2011
Ultima resposta 16 de mar. de 2011
Respostas 11
Participantes 5