Erro na compilação [resolvido]

7 respostas
P
class Operacoes {

  int num1;
  int num2;
  int total;

  Operacoes ope = Operacoes();
  public static void main(String args[]) {
  }

  public int getNum1() {
    return num1;
  }

  public void setNum1(int num1) {
    this.num1 = num1;
  }

  public int getNum2() {
    return num2;
  }

  public void setNum2(int num2) {
    this.num2 = num2;
  }

  public int getTotal() {
    return total;
  }

  public void setTotal() {
    this.total = total;
  }

  public static total somar(int num1, int num2) {
    this.total = num1 + num2;
    return this;
  }

  public static total subtrair (int num1, int num2) {
    this.total = num1 - num2;
    return this;
  }

  public static total multiplicar (int num1, int num2) {
    this.total = num1 * num2;
    return this;
  }

  public static total dividir (int num1, int num2) {
    this.total = num1 / num2;
    return this;
  }

  public static total resto (int num1, int num2) {
    this.total = num1 % num2;
    return this;
  }
}
class Calculadora extends Operacoes {

  public static void main (String arg[]) {

    Operacoes obj = new Operacoes();
    obj.num1 = 10;
    obj.num2 = 2;  
  
    obj.somar();
    obj.subtrair();
    obj.multiplicar();
    obj.dividir();
    obj.resto();
  }
}

7 Respostas

CristianPalmaSola10

Aonde esta acontecendo este erro na compilação ?

P

Ao compilar o arquivo Operaçoes.java, apresenta os seguintes erros:

Operacoes.java:35: cannot find symbol

symbol  : class total

location: class Operacoes

public static total somar(int num1, int num2) {

^

Operacoes.java:40: cannot find symbol

symbol  : class total

location: class Operacoes

public static total subtrair (int num1, int num2) {

^

Operacoes.java:45: cannot find symbol

symbol  : class total

location: class Operacoes

public static total multiplicar (int num1, int num2) {

^

Operacoes.java:50: cannot find symbol

symbol  : class total

location: class Operacoes

public static total dividir (int num1, int num2) {

^

Operacoes.java:55: cannot find symbol

symbol  : class total

location: class Operacoes

public static total resto (int num1, int num2) {

^

Operacoes.java:7: cannot find symbol

symbol  : method Operacoes()

location: class Operacoes

Operacoes ope = Operacoes();

^

Operacoes.java:36: non-static variable this cannot be referenced from a static context

this.total = num1 + num2;

^

Operacoes.java:37: non-static variable this cannot be referenced from a static context

return this;

^

Operacoes.java:41: non-static variable this cannot be referenced from a static context

this.total = num1 - num2;

^

Operacoes.java:42: non-static variable this cannot be referenced from a static context

return this;

^

Operacoes.java:46: non-static variable this cannot be referenced from a static context

this.total = num1 * num2;

^

Operacoes.java:47: non-static variable this cannot be referenced from a static context

return this;

^

Operacoes.java:51: non-static variable this cannot be referenced from a static context

this.total = num1 / num2;

^

Operacoes.java:52: non-static variable this cannot be referenced from a static context

return this;

^

Operacoes.java:56: non-static variable this cannot be referenced from a static context

this.total = num1 % num2;

^

Operacoes.java:57: non-static variable this cannot be referenced from a static context

return this;

^

16 errors
E

Aqui:

public static total somar(int num1, int num2) { this.total = num1 + num2; return this; }

Na linha indicada no erro, no lugar do tipo de retorno, está “total”.

Outra coisa, um método estático não pode acessar o objeto “this”.

P

E como eu devo proceder?

O meu exercício é para criar uma classe chamada Operacoes, contendo os seguintes métodos:

somar, multiplicar, dividir, subtrair e resto

Todos os métodos recebendo dois parâmetros e retornando a operação de cada um deles.

3 atributos privados, chamados num1, num2 e total

e depois criar uma classe chamada Calculadora que herde as operações.

E
  1. entenda o que é “static”.
  2. entenda que “tipo de retorno” é diferente de “retorno”. Você fez public static total somar e no final do método um “return this”. Resumindo, você está retornando o objeto this, que o código está tentando entender que é da classe “total”, entretanto não existe uma classe total.

Obs: aqui a gente prefere indicar o caminho que dar a resposta pronta.

E

Dica: tire todos os static do seu programa, exceto o “public static void main”. (Eu sei que ainda vão ficar alguns erros de compilação mas isso você deve resolver se pensar um pouquinho).

Depois que você aprender a mexer direitinho com orientação a objetos, e entender para que serve realmente o static, pode usar o static.

Mas antes disso evite usar o static sempre que possível.

P

Obrigado, estou lendo o material aqui no GUJ “Entendendo static”, teria outro material que vocês possam orientar para que eu consiga fazer e entender o que eu estou fazendo em relação a esse exercício?

Criado 30 de julho de 2012
Ultima resposta 30 de jul. de 2012
Respostas 7
Participantes 4