Sintaxe orientação a objetos

3 respostas
R

E ae pessoal, beleza?

Estou com um problema no código abaixo, o meu if não está funcionando.

O problema é nessa linha:

if(p.getCodigo()==codigo){

Abaixo segue o código completo:

public int inserir (int codigo, String nome, int qtd, double preco,int n){
        no p, ant,novo;        
        
        p=inicio;   ant=inicio;
          
        while(p.getProx()!=null && p.getCodigo()<codigo){
            if(p.getCodigo()==codigo){
                System.out.println("Erro ao inserir o produto " +codigo+ ".");
                return n;
            }
            ant=p;
            p=p.getProx();            
    }

Acredito que eu esteja fazendo a comparação de maneira errada, por isso a condição do meu if nunca dá verdadeira.

Como faço essa comparação?

Desde já agradeço as respostas :slight_smile:

3 Respostas

andrews360

amigo posta o código inteiro para eu dar uma olha da onde vc declara inicio

R

Tah ai embaixo a classe lista, onde eu declaro inicio:

public class lista { 
    private no inicio;
    
    public lista (){
        inicio = new no ();
    }  
    public no busca (int codigo){
        no p;
        p=inicio;
        
        while(p.getProx()!=null){
            if(p.getCodigo()==codigo){
                return p;
            }
            p=p.getProx();
        }         
         return null;
    }
    public int inserir (int codigo, String nome, int qtd, double preco,int n){
        no p, ant,novo;        
        
        p=inicio;   ant=inicio;
          
        while(p.getProx()!=null && p.getCodigo()<codigo){
            if(p.getCodigo()==codigo){
                System.out.println("Erro ao inserir o produto " +codigo+ ".");
                return n;
            }
            ant=p;
            p=p.getProx();            
    }                  
            novo=new no(); 
            novo.setCodigo(codigo);
            novo.setNome(nome);
            novo.setQtd(qtd);
            novo.setPreco(preco);     
        
        //insercao no inicio
        if (p==ant){
            p.setProx(novo);
            System.out.println("Produto " +codigo+ " inserido com sucesso!");
            return n+1;  
        }
        
        //insercao no final 
        if (p.getProx()==null){                    
            p.setProx(novo);  
            System.out.println("Produto " +codigo+ " inserido com sucesso!");
            return n+1;           
           
    }    
           //insercao no meio           
            
            novo.setProx(p);
            ant.setProx(novo);
            
            System.out.println("Produto " +codigo+ " inserido com sucesso!");
            return n+1;     
        
    }

Tah ai embaixo a classe no:

public class no {   
    private int codigo;  
    private String nome;  
    private int qtd;  
    private double preco;     
    private no prox;  
      
    public int getCodigo(){ 
        return codigo;  
    }        
     public String getNome() {
        return nome;
    } 
     public int getQtd (){
         return qtd;
     }
     public double getPreco (){
         return preco;
     }
    public no getProx(){  
        return prox; 
        
     }     
    public void setCodigo (int codigo){  
        this.codigo=codigo;
     } 
    public void setNome (String nome){
        this.nome=nome;
     }
    public void setQtd (int qtd){
        this.qtd=qtd;
     }
    public void setPreco (double preco){
        this.preco=preco;
     }     
    public void setProx (no prox){  
        this.prox=prox;          
     }  
          
    }
andrews360

cara só uma coisa para ajudar a organizar seu código seria legal nomear as variáveis e nome de classe sempre com letra maiúscula
descobri o erro é por que você esta comparando p.getCodigo() &lt; codigo
assim ele compara com o numero abaixo do código passado por parâmetro co coreto seria você usar assim

p.getCodigo() &lt;=codigo
Criado 8 de março de 2013
Ultima resposta 9 de mar. de 2013
Respostas 3
Participantes 2