Duvida sobre erro

2 respostas
R

aminha duvida é pq naum posso fazer op print destre jeito que implementei, são duas classes,essa venda e outra cliente, e outra duvida é como faço para ele verificar a quantidade de vendas cada chamada?

class Cliente{
  
  boolean ehInadimplente;
  private int semanal, mensal, semestral, anual;
  private double valorMedioDeCompra;
  double valorDesconto;
  Cliente( boolean in, int sema, int men, int seme, int an, double vmdc){
    
    ehInadimplente = in;
    semanal = sema;
    mensal = men;
    semestral = seme;
    anual = an;
    valorMedioDeCompra = vmdc;
  }
  
 
    
  boolean ehInadimplente(){
    if(ehInadimplente = true){
      return true;
    }
    else {
      return  false;
    }
  }
    
    void alteraIna(boolean novoIn){
      
      ehInadimplente   = novoIn;
    }
    
    boolean  obtemIn(){
      return ehInadimplente;
    }
    
    void alteraPeriodicidadeSemanal(int smal){
      
      semanal = smal;
    }
    
    int obtemPeriodicidadeSemanal(){
      
      return semanal;
    }
    
    void alteraPeriodicidadeMensal( int m){
      
      mensal = m;
    }
    
    int obtemPeriodicidadeMensal(){
      
      return mensal;
    }
    
    void alteraPeriodicidadeSemestral( int s){
      
      semestral = s;
    }
    
    int obtemPeriodicidadeSemestral(){
      
      return semestral;
    }
    
    void alteraPeriodicidadeAnual( int a)
    {
      anual = a;
    }
    int obtemPeriodicidadeAnual(){
      
      return anual;
    }
    double obtemValorMedio(){
      
      return valorMedioDeCompra;
    }
    
    
    void imprimeCliente(){
      
      System.out.println(" O Valor médio de compra é : " + valorMedioDeCompra);
      if(ehInadimplente == true){
        System.out.println(" O cliente é inadimplente ");
      }
      else{
        System.out.println(" O cliente esta em dia com os pagamentos ");
      }
      
      if (semanal > 0){
        System.out.println(" O cliente tem periodicidade semanal ");
      }
      else if (mensal > 0){
        System.out.println(" O cliente tem periodicidade mensal ");
      }
      else if(semestral > 0){
        
        System.out.println(" O cliente tem periodicidade semstral ");
      }
      
      else if(anual > 0){
        System.out.println(" O cliente tem periodicidade anual ");
      }
      else {
        System.out.println(" Não é cliente ");
      }
    }
  }
()
class Venda{
  
  int qtdeDeVendas;
  
  
  void imprimeCliente(Cliente cliente){
    
    cliente.imprimeCliente();
    
  }
  
  
    int calculaDesconto(Cliente desconto, double valorMedioDesconto){
    
    if(desconto.ehInadimplente == true){
      
      return 0;
    }
    else {
      if(desconto.obtemValorMedio() > valorMedioDesconto && desconto.obtemPeriodicidadeSemanal() > 0 ){
        desconto.valorDesconto = desconto.obtemValorMedio()*0.4;
        return 40;
        System.out.println(desconto.valorDesconto);// aqui esta o erro!!
        
      }
      
      else if(desconto.obtemValorMedio() <= valorMedioDesconto && desconto.obtemPeriodicidadeSemanal()> 0){
        desconto.valorDesconto = desconto.obtemValorMedio()*0.3;
        return 30;
        
      }
      else if (desconto.obtemValorMedio() > valorMedioDesconto && (desconto.obtemPeriodicidadeMensal() > 0 || desconto.obtemPeriodicidadeSemestral() > 0)){
        desconto.valorDesconto = desconto.obtemValorMedio()*0.3;
        return 30;
        
        
      }
      else if (desconto.obtemValorMedio() <= valorMedioDesconto && (desconto.obtemPeriodicidadeMensal() > 0 || desconto.obtemPeriodicidadeSemestral() > 0)){
        desconto.valorDesconto = desconto.obtemValorMedio()*0.25;
        return 25;
        
      }
      else if(desconto.obtemValorMedio() > valorMedioDesconto && desconto.obtemPeriodicidadeAnual() > 0){
        desconto.valorDesconto = desconto.obtemValorMedio()*0.15;
        return 15;
        
      }
      else {
        return -1;
      }
    }
    return -1;
  }
}

2 Respostas

andre.santos

Olá!
Se você estiver se referindo sobre erro de compilação (provavelmente code unreachable), pode ter certeza que está sendo causado pelo return no lugar errado.

if(desconto.obtemValorMedio() > valorMedioDesconto && desconto.obtemPeriodicidadeSemanal() > 0 ){  
        desconto.valorDesconto = desconto.obtemValorMedio()*0.4;  
        return 40;  //ESTE RETURN
        System.out.println(desconto.valorDesconto);// aqui esta o erro!!  
}

Return só deve ser colocado quando não houver código que possa ser execudo após ele, no seu caso tem o System.out.println(desconto.valorDesconto);

Deste jeito funcionará:

if(desconto.obtemValorMedio() > valorMedioDesconto && desconto.obtemPeriodicidadeSemanal() > 0 ){  
        desconto.valorDesconto = desconto.obtemValorMedio()*0.4;  
        System.out.println(desconto.valorDesconto);
        return 40;
}

Dica: Quando tive algum erro, descreva o que vc está tentando fazer e cole a mensagem de erro. Ajuda muito quando alguém quiser ajudar… :wink:

Abraços!

R

ok valew a força!!!

Criado 4 de outubro de 2009
Ultima resposta 4 de out. de 2009
Respostas 2
Participantes 2