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