Construtores

Galera,
estou fazendo um programa em que tenho dois construtores na mesma classe,
o primeiro tem 2 parametros:

public DadosJ (String nome, int idade)
{
this.n=nome;
this.id=idade;
}

O meu problema é que nao consigo fazer funcionar o segundo que nao tem nenhum parametro.
Este vai servir par o caso em que o utilisador deixe vazio o nome e idade.
Assim este constructor inicialisara ele mesmo o nome e a idade com os valores:
Joao
23

Numa outra class tenho o main com:

System.out.println("Nome: ");
String ne=Keyboard.readString();
	
System.out.println("Idade: ");
int idd=Keyboard.readInt();
	
Dados d;	
d = new Banque (nomb, maxcptes);

Alguem me pode dizer como é que tenho que definir o segundo construtor na classe DadosJ e o q tenho q
pôr no main para que se o utilisador deixe os campos nome e idade vazio, ele utilise o segundo construtor
e nao o primeiro.

Muito obrigado. :wink:

public class A{ public A() { System.out.println("construtor sem parametros"); } public A(int x, int y) { System.out.println("construtor com 2 parametros"); } public static void main(String [] xxx){ A objX = new A(); A objY = new A(1,2); } }

Se você criar qualquer construtor, o java não criará para você o construtor sem parâmetros automaticamente.
Você deve cria-lo manualmente.

Pode ser algo assim:

public DadosJ() { this.n = ""; this.idade = 0; }

Mas, no caso da sua classe, um construtor assim deveria mesmo existir? Que sentido tem cria-lo?

Se faz sentido, vc também pode invocar um construtor dentro do outro através do this

public class A{ private int y; private String x; public A() { this("",0); } public A(String x, int y) { this.x=x; this.y=y;} public static void main(String [] xxx){ A objX = new A(); // é o mesmo que new A("",0); A objY = new A("oi",25); } }

[code]

public class A
{
private String n;
private int idd;

 public A (String nome, int idade)
 {
     this.n = nome;
     this.idd = idade;
 }

 public A ()
 {
     this ("Joao", 23);
	
  }


  String getnom()
  {
      return this.n;
  }


  int getidade()
  {
      return this.idd;
    }

}

/*******************************************************************************************/

public class princip
{
public static void main(String [] args)
{

     System.out.println("Indique o Nome (deixe vazio para ter o nome por predefinido): ");
     String nom=Keyboard.readString();
		
      System.out.print("Indique a Idade: ");
      int id=Keyboard.readInt();
		
      A a1;
      a1= new A ();
      a1 = new A (nom, id);
	
      System.out.println(a1.getnom());
      System.out.println(a1.getidade());
 }

}[/code]

Obrigado por me terem respondido. é quase isso o q eu quero. So que a diferenca é q a referencia tem q ser a mesma, a1 como aqui em cima.

Quero q para o mesmo objeto, haja a possibilidade de haver dois resultados dependendo do que o utilisador
indica para o nome e idade.

Indique o Nome (deixe vazio para ter o nome por predefinido): (vazio)
Indique a idade (ponha 0 para ter a idade predefinida): 0
Joao
23

//ou entao:

Indique o Nome (deixe vazio para ter o nome por predefinido): Vaz
Indique a idade (ponha 0 para ter a idade predefinida): 24
Vaz
24

Sabem como fazer? :roll:

     public A (String nome, int idade)   
     {   
         this.n = nome;   
         this.idd = idade;   
     }   
  
     public A () {} 

     public A(){
     this.n = null;
     this.idd = 0;   
}

Tente fazer assim… talves funcione.

nao é bem isso :cry:
Alguem tem mais alguma ideia de como fazer?

Não parece ser o caso de utilizar construtores.

[code]class Pessoa{
private int idade;
private String nome;
/* getters ans setters */
}
class Programa{
public static void main(String [] xxx){
int idadePadrao = 0;
String nomePadrao = “Jose”
Pessoa p = new Pessoa();

 /* aqui vc pergunta a idade. SE não for informada, vc seta a idadePadrao */

}
}
[/code]

[code]public class A
{
private String n;
private int idd;

 public A (String nome, int idade) {   
     this.n = nome;   
     this.idd = idade;   
 }   

 public A () {   
     this.n="Joao";
     this.idd=23;
       
  }   

   
  String getnom() {   
      return this.n; }   

  int getidade()  {   
      return this.idd; }   

}

public class princip
{
public static void main(String [] args) {

     System.out.println("Indique o Nome (deixe vazio para ter o nome por predefinido): ");   
     String nom=Keyboard.readString();   
           
      System.out.print("Indique a Idade(deixe vazio para ter o nome por predefinido):  ");   
      int id=Keyboard.readInt();   
           
      A a1 = new A ();   

      if (nom!=null & id!=0)
      {
a1 = new a (nom, id);
       }	

      System.out.println(a1.getnom());
      System.out.println(a1.getidade());
 }   

}
[/code]

Oi, estava aqui a experimentar e consegui chegar ao que eu quero…ou quase :smiley: Acrescentei um if. O que ele faz agora é que inicializa o nome com Joao e idade 23 com o construtor (sem parametros) mas se o utilizador nao deixar vazio o nome e nem der 0 à idade, ele executa o constructor [public A (String nome, int idade)] e afixa o nome e idade q o utilizador indicou, exemplo Nuno 21.

O unico problema é q so funciona se nao preencher nenhum dos dois dados ou entao preencher os dois.
Nao funciona se por exemplo ele deixar o nome vazio mas der um valor diferente de 0 à idade, ou vice-versa. :mrgreen:

Alguma ideia?

Obrigado.