Erro de incompatibilidade, why?

[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?

Não deveria ser: a= temp.getNum() ??

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ó

  1. 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
  2. variavel a recebe o valor que vc definiu, ou seja, 0
  3. cria um objeto n da mesma forma que em (1)
  4. imprime o valor definido, ou seja, 0
  5. altera o valor do atributo num do objeto n com o valor da variavel a, ou seja, 0
  6. imprime o valor definido, ou seja, 0 de novo

O que mais vc esperava? :wink:

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:

Onde vc está passando o valor “introduzido pelo utilizador”?

Numero temp= new Numero(num);

De onde saiu este num?
Que valor ele tem?

public static void main(String[] args)
      {
          Numero temp= new Numero(15);
          int a=temp.getNum();
          System.out.println(a); 
       }

Se fizer assim vai imprimir 15, mas se não passar o valor digitado pelo usuário vai imprimir 0

yep, ja vi a confusao. :?
a intenção é a main imprimir os numeros introduzidos pelo utilizador.

veja só

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 :wink: