Cannot find symbol

23 respostas
L

Galera bom dia.
Estou fazendo um programa de sistemas distribuidos para faculdade mas estou com um problema e não consigo descobrir o que é
Alguem poderia me ajudar.
Abaixo segue o print do erro.

Agradeço desde ja.
Abraço a todos.

23 Respostas

L.Bach

Pelo que li ali, tu declarou uma classe publica em um arquivo com o nome diferente.

Essa tua classe “Conta”, deve ser salva em um arquivo chamado Conta.java.

Altera isto e depois conta aí se funcionou.

Saudações

P

o nome da sua classe publica deve ser o mesmo nome do arquivo .java

L

A onde estava a linha Banco.java:4: class Conta is public, should be declared in a file named Conta.java foi resolvido depois da mudança do nome agora os outros erros continuam os mesmo.

L

Alguem pode me ajudar?

Marky.Vasconcelos

Tem certeza que os nomes dos métodos são aqueles?

Poste a classe inteira se não fica difiçil te ajudar.

L

Bom vamos la...eu tenho certeza que estou fazendo alguma orelhudisse me desculpem desde ja..sou realmente iniciante mesmo.
O código é todo esse ai em baixo, eu sei que deve estar faltando coisas mas não sei bem o que é.

import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
import java.util.*;
public class Conta  
{
	private String agencia;
	private String nome;
	private float saldo;
     
public class Banco extends UnicastRemoteObject  implements IBanco
	{
	private String agencia;	
	private String nome;
	private Vector contas;
    
    public Banco()throws RemoteException 
	{
      agencia = "3443-3";
	  nome = "Bradesco";
	  contas = new Vector();
    }
	       	
  public void criar(int c, String n, float v) throws RemoteException
	{
	  Conta co;
	  co = new Conta(c,n,v);
	  contas.add(co);
	  System.out.println("conta criada");
	}

	public double saldo(int numero) throws RemoteException
		{
		 Conta aux;
         int i;
		 double s;
         s = 0;
          for ( i = 0; i < contas.size(); i++)
          {
            aux = (Conta) contas.elementAt(i);
             if (aux.get_numero() == numero)
            {
             s = aux.get_saldo();
 
		  return (s);
		    }
          }
	    }
    }
}
Marky.Vasconcelos

Cade a classe Conta?

E se voce esta realmente começando RMI não é o caminho certo para começar.

L

Desculpe…fui realmente vago no que pedi para vcs me auxiliarem.
É que assim, tenho um exercicio da faculdade para fazer, só que o professor não explica nada direito então assim fiquei mais perdido que tudo.
O Exercicio consistem em:

Fazer um sistema de caixa eletrônico que deve se comunicar com pelo menos 3 servidores de um mesmo banco e os serviços disponíveis são:
solicitar saque,
depósito,
consultar o saldo.

  1. Considere que o banco contém um conjunto de contas, portanto implemente o objeto banco contendo um vetor de contas e não implemente conta como um objeto distribuído.
  2. Considere que o objeto conta tenha os atributos (numero, nome e saldo). Ao se criar um conta já atribua valores aos seus atributos.
  3. Tanto o Caixa quando o banco são objetos distribuídos, portanto prestam serviços para a comunidade.

E eu não fazia a menor idéia de por onde começar…ai tentei de algum jeito.
Obrigado.

Marky.Vasconcelos

Cade a classe conta?

L

É essa que eu te passei ai em cima…
Todo esse código é dela.

bsl.lacerda

Pelo que eu vi você está chamando métodos que não existem. (aux.get_saldo()?)
Onde está o método get_saldo() na classe Conta?

T

Hum… não se pode ter 2 classes públicas em um mesmo arquivo. Você pôs as 2 classes em arquivos diferentes?

L
Desculpem estou postando o código todo novamente, com os métodos.
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
import java.util.*;
public class Conta  
{
	private String agencia;
	private String nome;
	private float saldo;
	private int numero;
     
public class Banco extends UnicastRemoteObject  implements IBanco
	{
	private String agencia;	
	private String nome;
	private Vector contas;
    
    public Banco()throws RemoteException 
	{
	  agencia = "3443-3";
	  nome = "Bradesco";
	  contas = new Vector();
    }
	
    public void set_numero(int numero) throws RemoteException
    {  
      numero=numero;      
    }      
       
    public void set_saldo(double saldo) throws RemoteException
	{  
      saldo=saldo;  
    }
	
	public int get_numero() throws RemoteException
	{  
      return numero;  
    }

	public double get_saldo() throws RemoteException
	{  
      return saldo;  
    }	
       	
  public void criar(int c, String n, float v) throws RemoteException
	{
	  Conta co;
	  co = new Conta(c,n,v);
	  contas.add(co);
	  System.out.println("conta criada");
	}

	public double saldo(int numero) throws RemoteException
		{
		 Conta aux;
         int i;
		 double s;
         s = 0;
          for ( i = 0; i < contas.size(); i++)
          {
            aux = (Conta) contas.elementAt(i);
             if (aux.get_numero() == numero)
            {
             s = aux.get_saldo();
 
		  return (s);
		    }
          }
	    }
    }
}
Jeferson_Manetti

bom gente!!!

a classe conta não tem construtor… certo?
portanto e criado o default… por padrão o default não possui argumentos… certo?
logo, a linha

Conta  co = new Conta(c,n,v);

não vai funcionar… =)

outra coisa segundo a classe q vc mandou…
cade o metodo get_numero() e get_saldo()?

por isso ele diz “cannot find symbol” =)

a uma ultima dica…
Jamais use Vector… eu tambem adorava usa-la =(
use a ArrayList();

blz…

bsl.lacerda

get_saldo() e get_numero() são métodos da classe Banco e não da classe Conta.
Separe as classes em arquivos diferentes, vai ficar mais claro.

L

Da 34 a 37 tem o get _numero e da 39 a 42 tem o get_saldo, mas parece que não estão funcionando e não sei porque.

Eu ja tentei colocar valores fixos nessa linha

Conta  co = new Conta(c,n,v);

tipo

Conta  co = new Conta(10,"XXX",10.1);

mas da erro do mesmo jeito.

Usar arraylist agora vc complicou mais ainda minha vida…hahahaha…
Mas obrigado pelos esclarecimentos
Como não conheço nada vou aprendendo aos poucos.

L.Bach

Leandro,

Está aparecendo “cannot find symbol” porque get_saldo e get_numero não estão dentro da classe Conta, e sim dentro da classe Banco.

O segundo problema, é que tu está declarando a classe Banco como public também, e só pode existir uma classe public por arquivo, conforme o thingol disse anteriormente.

L

Hummm entendi...agora eliminou os 2 erros de get_numero e get_saldo.

Agora ficou só o erro do

Conta.java:47: cannot find symbol
symbol : constructor Conta(int,java.lang.String,float)
location: class Conta
co = new Conta(c,n,v);
^
Note: Conta.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
1 error

Falaram para usar um arraylist, mas não faço a menor idéia de como usar para substituir o meu vetor.
Separar as classe assim que vcs dizem não é?

import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
import java.util.*;
public class Conta  
{
	private String agencia;
	private String nome;
	private float saldo;
	private int numero;

    public void set_numero(int numero) throws RemoteException
    {  
      numero=numero;      
    }      
       
    public void set_saldo(double saldo) throws RemoteException
	{  
      saldo=saldo;  
    }
	
	public int get_numero() throws RemoteException
	{  
      return numero;  
    }

	public double get_saldo() throws RemoteException
	{  
      return saldo;  
    }
	

}
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
import java.util.*;
public class Banco extends UnicastRemoteObject implements IBanco
	{
	private String agencia;	
	private String nome;
	private Vector contas;
    
    public Banco()throws RemoteException 
	{
	  agencia = "3443-3";
	  nome = "Bradesco";
	  contas = new Vector();
    }
  	
  public void criar(int c, String n, float v) throws RemoteException
	{
	  Conta co;
	  co = new Conta(c,n,v);
	  contas.add(co);
	  System.out.println("conta criada");
	}

	public double saldo(int numero) throws RemoteException
		{
		 Conta aux;
         int i;
		 double s;
         s = 0;
          for ( i = 0; i < contas.size(); i++)
          {
            aux = (Conta) contas.elementAt(i);
             if (aux.get_numero() == numero)
            {
             s = aux.get_saldo();
 
		  return (s);
		    }
          }
	    }
    }

Estou certo? e Salva uma Conta e a outra como Banco.

L.Bach

Isso, salva como Banco.java e Conta.java.

O problema que resta é que está faltando tu declarar o construtor com parâmetros. Quando tu não declara explicitamente algum construtor, o compilador gera um automático, e este não espera parâmetros.

Tu precisa declarar algo assim, na classe Conta:

public Conta(int c, String n, float v) { //inicializa as variáveis aqui }

Só está faltando tu criar este construtor.

Saudações.

bsl.lacerda

Falta o construtor na classe Conta.

public Conta(int c, String n, float v){
    	this.numero = c;
    	this.nome = n;
    	this.saldo = v;
    }

Agora vai funcionar.

Jeferson_Manetti

como eu ja disse… e o pessoal reforço acima…

falta vc declarar um contrutor na classe conta que receba esses parametros…

blz…

pra vc q esta aprendendo sobre coleções…

aqui segue um bom artigo… bem legal

http://sergiotaborda.wordpress.com/java/colecoes-em-java/

espero ter ajudado…

L

Galera…desculpe a maneira como eu vou falar…
Mas pqp…vcs me ajudaram pra caramba mesmo…valeus, consegui terminar o exercicio e compilar…agora estou testando para ver se esta tudo certinho mesmo
Galera valeu mesmo, vcs são show de bola…
Abração a todos t+

Jeferson_Manetti

eh isso ai cara…

hoje nos ajudamos vc… amanha vc nos ajudara…

:slight_smile:

Criado 16 de março de 2009
Ultima resposta 17 de mar. de 2009
Respostas 23
Participantes 7