[code]public class Numero
{
private static int num;
public Numero(int num)
{
this.num = num;
}
public void setNum(int num)
{
this.num = num;
}
public int getNum()
{
return num; // não é necessário o this
}
public static void main(String[] args)
{
Numero temp= new Numero(num);
int a;
a=temp;
//int a=this.num; //ver!!
Numero n = new Numero(a); // cria um nome Numero com valor 10
System.out.println(n.getNum()); // imprime o valor de n (10)
n.setNum(a); // seta o valor de num para 20
System.out.println(n.getNum()); // imprime o valor de n (20)
}
}[/code]
A ideia do codigo era aparecer os resultados novos que o utilizador insere ao invocar a main. Mas dá erro de incompatibilidade na linha a=temp;
Alguem tem alguma sugestao?
Yep, assim já compila, mas a main dá sempre resultado 0 0! e devia mostrar os valores introduzidos pelo utilizador.
humm…
alguem sabe onde anda o erro?
public static void main(String[] args)
{
Numero temp= new Numero(num); // 1
int a;
a=temp.getNum(); //2
Numero n = new Numero(a); // 3
System.out.println(n.getNum()); // 4
n.setNum(a); // 5
System.out.println(n.getNum()); // 6
}
Veja só
cria um objeto temp atraves do construtor Numero (int blablabla) com o argumento num. Qual sera o valor do argumento num? coloca um println lá pra vc ver… verá que é 0
variavel a recebe o valor que vc definiu, ou seja, 0
cria um objeto n da mesma forma que em (1)
imprime o valor definido, ou seja, 0
altera o valor do atributo num do objeto n com o valor da variavel a, ou seja, 0
public static void main(String[] args)
{
Numero temp= new Numero(num);
int a=temp.getNum();
System.out.println(a);
}
Agora está mais melhorado e pequeno!
A primeira linha diz que tou a criar uma instancia que ficará no valor temp de tipo Numero , certo? o parametro q esta no new Numero(num) é o valor que o utilizador introduz né?
A segunda linha diz q a tera o valor guardado do num.
A terceira linha imprime o valor introduzido pelo utilizador!
Que corre mal?
:shock:
vc tem um atributo estático inteiro chamado num – atributos estáticos que não são inicializados explicitamente são inicializados com algum valor padrão, no caso de inteiros, 0.
vc tem um construtor de uma classe que recebe como parametro um numero inteiro e altera uma variavel estática. ou seja, cada vez que vc chamar uma instância da sua classe num tera seu valor alterado.
vc chama o construtor da classe com o atributo num, que é 0. vc atribui 0 ao 0 umas 3 vezes