Não consigo localizar o erro. Utilizo Eclipse 3.1.0
Abri um projeto e salvei a main e uma classe com duas variaveis só para teste e nao consigo compilar.
import java.util.Scanner;
public class progmain {
public static void main(String[] args) {
Conta minhaconta;
minhaconta = new Conta();
System.out.println("Teste de chamada");
Scanner n = new Scanner (System.in);
int num;
System.out.println("Digite um numero");
num = n.nextInt();
saldo = 123.45;
numero=123;
if(num>=10)
{
System.out.print("Saldo é: "+saldo);
}
else
{ System.out.print("Saldo é: "+numero+"teste de impressão");
}
}
Ou vc tem atributos de uma classe, ou vc tem variaveis locais inseridas em um método (ou bloco de código interno ao mesmo).
Quando vc declara um atributo de classe ele possui modificadores de visibilidade (entre outros). Ex:
class Conta {
public int numero;
}
Esse “número” percente à classe Conta e esta presente nas instâncias da classe Conta. Normalmente utilizamos um par de métodos para acessar um atributo (veja: getters and setters) e o mesmo é privado pois os atributos guardam o estado do objeto e queremos alterar o estado através de chamadas de métodos.
Agora
class Conta {
public int soma(int a, int b) { int total = a + b; return total; }
}
aqui, total é uma variavel local ao método soma. Vc só pode utiliza-lo dentro do método soma.
Falta a vc os conceitos de encapsulamento. Dê uma estudada nisso.
Em tempo:
[code]public class Conta {
private int numero;
private float saldo;
public void setNumero(int numero){ this.numero = numero; }
public void getNumero(){ return this.numero; }
// …
} [/code]
Brother não entendi muito qual sua duvida, mas vamos lá…
Olha só, vc está usando uma variável chamada “numero” na classe main que não foi declarada em nenhum lugar. Percebi que ela está declarada em outra classe. Se sua idéia é acessa-la, vc não vai conseguir sem instanciar a classe que a contém, que no caso é a classe Conta.
Tenho uma duvida quanto a seu código.
A classe Conta está no mesmo pacote que a classe main ou as duas classes estão no mesmo arquivo ?
Por que se vc estiver com as duas classes no mesmo arquivo, vc só poderá ter uma única classe publica e nome do arquivo tem que ser identico com o nome da classe publica.
-Percebi também que vc não colocou um modificador de visibilidade e caso vc esteja com classes em pacotes diferente vc não vai poder vizualizar a variável “numero”.
Verifica as possibilidades de erro que te passei e aproveita pra postar aqui o danado do erro…
Abraços,
Rulio Vangellis.
Não é uma boa solução pois vc expõe os seus dados.
O ideal seria vc alterar os atributos da classe através de métodos (ai entrariam os famigerados getters & setters pra começo de conversa).
IMHO eu faria assim
[code]class Conta {
private int numero;
private double saldo;
public class Conta(int numero){ this.numero = numero; this.saldo = 0.0;}
public double consultaSaldo(){ return this.saldo; }
public void alteraSaldo(double valor){ this.saldo = this.saldo + valor; }
public int qualEhONumeroDaConta(){ return this.numero; }
}[/code]
Perceba que eu não segui a convenção get/set mas sim criei um construtor e dois métodos.
O Construtor recebe o numero da conta que, teoricamente, não deve mudar.
consultaSaldo returna o saldo corrente.
alteraSaldo soma ou diminui algum valor do saldo. se vc passar um valor positivo é um deposito, negativo é saque.
qualEhONumeroDaConta é um deboche
Isso é apenas um esboço, tem mais coisa pra fazer ai