Resolvendo/entendendo Classes e Métodos [resolvido]

6 respostas
G

Ola pessoal.

O que tem de errado nestes dois códigos? Pelo que entendi até agora, eles se relacionam, correto?

Segue os cod e o erro do compilador:

class Conta {
		
		int numero;
		String dono;
		double saldo;
		double limite;
	
		new Conta ();
		Conta minhaConta;
		Conta minhaConta;
		minhaConta = new Conta ();
	}
}

...

class Programa {
	public static void main (String[] args) {
	
		Conta minhaConta;
		minhaConta = new Conta();
		
			minhaConta.dono = "Duke";
			minhaConta.saldo = 1000.0;
			
			minhaConta.saca (200);
			minhaConta.deposita (500);
			
		System.out.println (minhaConta.saldo);
		System.out.println ("Saldo Atual: " + minhaConta);
	}
}

Erro compilando Conta.java

Microsoft Windows [versão 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. Todos os direitos reservados.

C:\Users\Guilherme Lessa>cd desktop

C:\Users\Guilherme Lessa\Desktop>javac Conta.java
Conta.java:8: illegal start of type
new Conta ();
^
Conta.java:8: ';' expected
new Conta ();
^
Conta.java:8: illegal start of type
new Conta ();
^
Conta.java:8: expected
new Conta ();
^
Conta.java:11: expected
minhaConta = new Conta ();
^
Conta.java:13: class, interface, or enum expected
}→
^
6 errors

C:\Users\Guilherme Lessa\Desktop>

Erro compilando Programa.java

Microsoft Windows [versão 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. Todos os direitos reservados.

C:\Users\Guilherme Lessa>cd desktop

C:\Users\Guilherme Lessa\Desktop>javac Programa.java
.\Conta.java:8: illegal start of type
new Conta ();
^
.\Conta.java:8: ';' expected
new Conta ();
^
.\Conta.java:8: illegal start of type
new Conta ();
^
.\Conta.java:8: expected
new Conta ();
^
.\Conta.java:11: expected
minhaConta = new Conta ();
^
.\Conta.java:13: class, interface, or enum expected
}→
^
.\Conta.java:10: minhaConta is already defined in Conta
Conta minhaConta;
^
.\Conta.java:11: cannot find symbol
symbol : class minhaConta
location: class Conta
minhaConta = new Conta ();
^
Programa.java:10: cannot find symbol
symbol : method saca(int)
location: class Conta
minhaConta.saca (200);
^
Programa.java:11: cannot find symbol
symbol : method deposita(int)
location: class Conta
minhaConta.deposita (500);
^
10 errors

C:\Users\Guilherme Lessa\Desktop>

Vamos la, agradeço as respostas...

6 Respostas

ViniGodoy

A sintaxe da classe conta está completamente errada, principalmente da parte após a declaração dos atributos (a partir daquele new ali).

class Conta {
 //Isso são atributos. "Variáveis" que sua classe tem.
		int numero;
		String dono;
		double saldo;
		double limite;

//Aqui viriam as "funções" da sua classe, ou seja, as ações que uma conta é capaz de desempenhar. 
//Mas vc não declara nenhum corpo. O new também não é usado aqui.
		new Conta ();
		Conta minhaConta;
		Conta minhaConta;
		minhaConta = new Conta ();
	}
}
Uma forma melhor seria:
public class Conta {		
   private int numero;
   private String dono;
   private double saldo;
   private double limite;
	
   //Cria uma nova conta. É necessário informar o número, dono e limite.
   public Conta(int numero, String dono, double limite) {
      this.numero = numero;
      this.dono = dono;
      this.saldo = 0;
      this.limite = limite;
   }

   public int getNumero() {
      return numero;
   }

   public String getDono() {
      return dono;
   }

   public double getSaldo() {
      return saldo;
   }

   public double getLimite() {
      return limite;
   }
   
   public void sacar(double valor) {
      if (saldo + limite - valor < 0)
         throw new IllegalArgumentException("Sem fundos.");
      }
      saldo -= valor;
   }

   public void depositar(double valor) {
      saldo += valor;
   }
}
E aí sim, vc poderia usar assim:
public class Programa {
   public static void main(String[] args) {
      Conta conta = new Conta(1234, "Guilherme Lessa", 1000);
      conta.depositar(1000);
      conta.sacar(500);
      System.out.printf("O seu saldo é: %.2f.%n", conta.getSaldo());
   }
}
C

Você tá tentando executar algoritmos dentro de corpo de classes, e isso acontece em métodos.

Se quiser da uma olhada nas minhas vídeo aulas

wender.jean

Dê uma olhada sobre, construtores, instância e metodos getter’s e setter’s, com estes conceitos você já consegue fazer este código rodar.

:idea:

G

Beleza, gostei da resposta do Godoy, agora tenho que sair, quando chegar vou estudar esse código la, entender ele e ver o q eu errei.

Agradeço mais respostas. Valeu.

G

Então, o código do Godoy rodou legal.

Mas então, vou continuar mais algumas páginas, e trabalhar com esse código, ai então se nada ocorrer fecho o tópico.
Obrigado mais uma vez ai pelo pessoal, fórum ta de parabéns!

Guts00

[b][color=green]Tb estou acompanhando a apostila da Caelum, e na apostila rodaria de boa só com esse codigo.

class Conta {

public static void main (String [] args) {
	
		Conta minhaConta;
		minhaConta = new Conta ();
	
		minhaConta.dono = "Leo";
		minhaConta.saldo = 5000.0;
		
		System.out.println("Saldo: " + minhaConta.saldo);
	
	
}

} [/color][/b]

Criado 28 de julho de 2011
Ultima resposta 9 de jan. de 2013
Respostas 6
Participantes 5