Construtor

9 respostas
T

Ola,
Como imprimo a string que tah no 1º construtor?
Se eu fizer = o 2º construtor vai funfar mas tem otra maneira?

public class Cao
{
  String nome,cor;
  double peso;
  
    Cao(String passnome){
        passnome = "Aqui sem nome ainda";             
    }
    Cao(){    
        nome="Erwin";
    }
    
    void mpeso(double passpeso){
        passpeso= 44.2;
        System.out.println(passpeso);
    }
    
    void mcor(String passcor){
        passcor="WHITE";
       System.out.println(passcor);}
        
    public static void main(String []args){
        
        Cao i = new Cao();
       
        i.mpeso(i.peso);
        i.mcor(i.cor);
        System.out.println(i.passnome);//AKI ERROR; como imprimir a string passnome?
        System.out.println(i.nome);
    }
}

vlews

9 Respostas

Vando_Java

É necessário, vc criar uma váriavel setPassNome e passá-la na main.

Daí, no Sysout, vc chama o método getNome desta variável.

Mesmo que vc crie esta variável sendo estática, ela deve ser inicializada através do contrutor da classe.

hiarlay

Cara eh o seguinte
o java tem padronizações para facilitar nossa vida, o seu passnome seria uma função na qual atribuiria o resultado do construtor a variavel nome
ele entao deixa de ser passnome e passa a ser setNome(String nome); recebendo o nome tendo que ser implementado o mesmo em seu codigo, segue a baixo como ficaria.

public class Cao   
{   
  String nome,cor;   
  double peso;   

//Crie metodos get e set

public void setNome(String nome){
this.nome=nome;
}

public String getNome(){
return nome;
}
     // e por ai vai, termine de ageitar seu codigo abaixo e crie o resto dos getters e seterrs
    Cao(String passnome){   
        setNome( "Aqui sem nome ainda");               
    }   
    Cao(){       
        setNome("Erwin");   
    }   
       
    void mpeso(double passpeso){   
        setPeso( 44.2);   
        System.out.println(getPeso());   
    }   
       
    void mcor(String passcor){   
        String passcor="WHITE";   
       System.out.println(passcor);}   
           
    public static void main(String []args){   
           
        Cao i = new Cao();   
         
        i.mpeso(i.peso);   
        i.mcor(i.cor);   
        System.out.println(i.passnome);//AKI ERROR; como imprimir a string passnome?   
        System.out.println(i.nome);   
    }   
}
hiarlay

e la em baixo voce colocaria i.getPeso(); i.getNome() e por ai vai

rafaelglauber

Oi,

Não ví no seu código essa propriedade (passnome)

System.out.println(i.passnome);//AKI ERROR; como imprimir a string passnome?

revisa primeiro o programa...tou vendo que na verdade passnome é o nome de um argumento de seu primeiro construtor e nada mais, isso não o torna uma propriedade pelo fato de tá nos argumentos do contrutor.

Sugestão:

public class Cao
{
  String nome,cor,passnome;
  double peso;
  
    Cao(String passnome){
        this.passnome = passnome;             
    }
    Cao(){
    	this("vai imprimir esse agora");
        nome="Erwin";
    }
    
    void mpeso(double passpeso){
        passpeso= 44.2;
        System.out.println(passpeso);
    }
    
    void mcor(String passcor){
        passcor="WHITE";
       System.out.println(passcor);}
        
    public static void main(String []args){
        
        Cao i = new Cao();
       
        i.mpeso(i.peso);
        i.mcor(i.cor);
        System.out.println(i.passnome);//AKI ERROR; como imprimir a string passnome?
        System.out.println(i.nome);
    }
}

Repare que chamei o construtor sobrecarregado dentro do outro. :wink:

T

olha quase consegui com o gets e sets mas naun deu…

ae aqui foi o resultado que queria
mas permanece algumas duvidas
reparem nos comentarios

vleeews

public class Cao
{
  String nome,cor,passnome;
  double peso;
  
       
    Cao(String passnome){
        this.passnome=("Aqui sem nome ainda");//na verdade esse this define o q?
    }
        
    Cao(){    
        this("Aqui nao imprime pq?");// qual oreal significado do this e this.?
        nome="Erwin";
    }
    
    void mpeso(double passpeso){
        passpeso=44.2;
        System.out.println(passpeso);
    }
    
    void mcor(String passcor){
        passcor="WHITE";
       System.out.println(passcor);}
        
    public static void main(String []args){
        
     
        Cao i = new Cao();
       
        i.mpeso(i.peso);
        i.mcor(i.cor);
        System.out.println(i.nome);
        System.out.println(i.passnome);
    }
}
robsonmrsp

Vou comentar o seu codigo…

public class Cao  
    {  
      String nome,cor,passnome;  
      double peso;  
        
        //Uma dica! procure diferenciar no nome do argumento passado no construtor e o nome do atributo de classe. Isso é importante para que o código fique mais claro.     
          
      Cao(String pPassnome){  //Note que eu troquei o nome do parametro de passnome para pPassnome
           this.passnome=("Aqui sem nome ainda");//na verdade esse this define o q?  Esse this é a referencia ao objeto corrente. o que voce está fazendo é atribuindo o valor "Aqui sem nome ainda" ao atributo de classe passnome

        }  
             
      Cao(){      
           this("Aqui nao imprime pq?");// qual oreal significado do this e this.?  nessa linha voce está chamando o construtor da classe Cao que recebe como parametro uma String. A frasse "Aqui nao imprime pq?" não é utilizada porque no Construtor ( O que recebe uma String) voce não faz nada com ela(o parametro pPassnome não é usado no construtor) 

           nome="Erwin";  
       }  
         
       void mpeso(double passpeso){  
           passpeso=44.2;  
           System.out.println(passpeso);  
       }  
         
       void mcor(String passcor){  
           passcor="WHITE";  
          System.out.println(passcor);}  
             
       public static void main(String []args){  
             
          
           Cao i = new Cao();  
            
           i.mpeso(i.peso);  
           i.mcor(i.cor);  
           System.out.println(i.nome);  
           System.out.println(i.passnome);  
       }  
  }
LPJava

o valor que vc quer imprimir está em uma variavel local vc poderia colocar um System.out.println() e quando ele executar seria impresso ou fazer o que a galera falou, agora siga os padroes recomendados pela Sun, como vc está começando começe a si educar desde ja, pq depois que se acostuma com as gambiarras eh dificil sair delas, gambiarras é um droga na vida de um programador…

:smiley:

D

Caso Queira Colocar Janelas JOptionPane,

SUBSTITUA

System.out.println(i.passnome);

POR

JOptionPane.showMessageDialog(null,i.passnome);

nao esqueca de importa a classe do JoptionPane

import javax.swing.JOptionPane;
T

ô blee

vlews ae galera!

Criado 4 de setembro de 2008
Ultima resposta 5 de set. de 2008
Respostas 9
Participantes 7