Construtor

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

É 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.

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.

[code]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);   
}   

}
[/code]

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

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:

[code]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);
}

}
[/code]

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

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);
    }
}

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);  
       }  
  }  

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:

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;

ô blee

vlews ae galera!