Alguma alma caridosa poderia me ajudar por favor?

4 respostas
R

Seguinte, ja se esvairiram todas as minhas ideias e esforços em cima deste codigo em java, basicamente eu teria de implementar um cadastro de amigos por ex. nome, endereço e data nasc.

e isto deveria ser feito de um arquivo Menu.java que chama o pessoa.java em determinada opção.
Menu.java possuiria 1- Incluir, 2- Excluir, 3- Consultar, 4- Alterar e 5- Sair

Mas acontece que eu só consegui fazer isso no arquivo direto teste.java(Pessoa)
ele roda o menu e inclui !!! Problema não sei excluir nem Alterar, mas tudo bem… esse não é o meu maior problema, o meu maior problema é que não posso usar Banco de Dados para armazenar, tenho que usar um VETOR, ARRAY, seja o que for, isso eu consegui apenas para inclusão, mas o que me trinca os miolos é que eu vou, entro com a opção incluir, incluo quantos dados eu quiser, ele cria 1 vetor para cada pessoa, tudo bem, dai eu mando ele consultar TODOS os registros, ele exibe tranquilo, dai eu tento incluir mais 1 ou 2, PROBLEMA, todos os anteriores se perdem e não aparecem mais, só são listados os ultimos 1 ou 2 que eu adicionei!!! como eu resolvo isso ??? por favor alguem pode me dar uma luz ???
o codigo que eu utilizei é este:

import java.io.*;
import java.util.Vector;

class Pessoa {

String nome;

String endereco;

String dataNascimento;

}

class teste {
public static void main(String[] args) {

menu();

}

public static void menu() {

try {  	
	BufferedReader teclado=new BufferedReader (new InputStreamReader (System.in));
	String opcaox;
	int opcao;
	System.out.println("Digite 1 para incluir");
                            System.out.println("Digite 2 para excluir");
	System.out.println("Digite 3 para consultar");
                            System.out.println("Digite 4 para alterar");
	System.out.println("Digite 5 para sair");
	opcaox = teclado.readLine();           
	opcao = Integer.parseInt(opcaox);  	

	switch (opcao){  		
	
		case 1:
  		teste();
  		break;
  		
  		case 2:
  		//seek();
  		break;
  	
  		case 3:
  		System.exit(1);
  		break;
  	}
}
catch (Exception e){
}

}

public static void teste() {

BufferedReader IO=new BufferedReader (new InputStreamReader (System.in));
Vector pessoas = new Vector();
// armazena varias informações sobre uma pessoa
try{

while (true) {
  System.out.println("Digite o nome da pessoa a armazenar ou enter para voltar ao menu");
  String nome = IO.readLine();
  if (nome.length() == 0) {      	
    menu();        
    break;
  }
  System.out.println("Digite o endereco da pessoa");
  String endereco = IO.readLine();
  System.out.println("Digite a data de nascimento da pessoa");
  String dataNascimento = IO.readLine();
  Pessoa p = new Pessoa();
  p.nome = nome;
  p.endereco = endereco;
  p.dataNascimento = dataNascimento;
  pessoas.add(p);
        
}
// busca informações sobre pessoas através do nome     
while (true) {
  //System.out.println("Digite o nome da pessoa a buscar");
  //String chave = IO.readLine();
  //if (chave.length() == 0) {
  //  break;
  //}
  // buscar as informações sobre a pessoa

  boolean encontrado = false;
  for (int j = 0; j < pessoas.size(); j++) {
    Pessoa p = (Pessoa) pessoas.elementAt(j);
    //if (p.nome.equals(chave)) {
      System.out.println("Nome:"+p.nome);
      System.out.println("Endereco:"+p.endereco);
      System.out.println("Nascimento:"+p.dataNascimento);
      //encontrado = true;
      //break;
    //}

  
  
  if (! encontrado) {
    //System.out.println("Nome nao encontrado");
  }
  }
  teste();
}
}

catch(Exception erro){

}

}

}

Ahhhh Muito Obrigado !!!

4 Respostas

H

Eu realmente não entendi seu real problema, e seu código está um tanto confuso. Seja mais claro em sua explicação e coloque seu código dentro da tah

R

Obrigado.
Blz !!! vou tentar ser mais claro:

Tudo o que segue abaixo é o fonte do arquivo teste.java:

import java.io.*;
import java.util.Vector;

class Pessoa {

String nome;-------------------|

String endereco;---------------| estes são os dados que desejo salvar

String dataNascimento;-------| serão varios registros destes (Amigos).

}

class teste {
public static void main(String[] args) {

menu();

}

public static void menu() {

try {

BufferedReader teclado=new BufferedReader (new InputStreamReader (System.in));

String opcaox;

int opcao;

System.out.println(Digite 1 para incluir);--------|

System.out.println(Digite 2 para excluir);-------| Este é o meu menu

System.out.println(Digite 3 para consultar);----| consigo ficar alternando

System.out.println(Digite 4 para alterar);-------| entre incluir e consultar

System.out.println(Digite 5 para sair);-----------|

opcaox = teclado.readLine();

opcao = Integer.parseInt(opcaox);

switch (opcao){

case 1:

teste();

break;
case 3:

//seek();

break;
case 5:

System.exit(1);

break;

}

}

catch (Exception e){

}

}

public static void teste() {

BufferedReader IO=new BufferedReader (new InputStreamReader (System.in));

Vector pessoas = new Vector();

// armazena varias informações sobre uma pessoa

try{
while (true) {

System.out.println(Digite o nome da pessoa a armazenar ou enter para voltar ao menu);

String nome = IO.readLine();------|Aqui eu coleto as informações

if (nome.length() == 0) {

menu();

break;

}

System.out.println(Digite o endereco da pessoa);

String endereco = IO.readLine();-----------|Aqui eu coleto as informações

System.out.println(Digite a data de nascimento da pessoa);

String dataNascimento = IO.readLine();-----|Aqui eu coleto as informações

Pessoa p = new Pessoa();

p.nome = nome;

p.endereco = endereco;

p.dataNascimento = dataNascimento;

pessoas.add§;--------------------| Aqui eu gravo tudo no Vector atual
} -----------------------------------------| e daqui ateh o fim

// busca informações sobre pessoas através do nome

while (true) {

<a href="//System.out.println">//System.out.println</a>(“Digite o nome da pessoa a buscar”);

//String chave = IO.readLine();

//if (chave.length() == 0) {

// break;

//}

// buscar as informações sobre a pessoa

for (int j = 0; j < pessoas.size(); j++) {
Pessoa p = (Pessoa) pessoas.elementAt(j);

System.out.println(Nome:+p.nome);

System.out.println(Endereco:+p.endereco);

System.out.println(Nascimento:+p.dataNascimento);

---------------------| é a lista completa dos Amigos cadastrados…
}
}
teste();
}
}
catch(Exception erro){
}
}
}

Bem, o que acontece neste codigo, vc executa, aparece o menu, Dai vc escolhe a opção Nr. 1
Ele te pede o nome para armazenar, vc entra e ele pede o endereço e data de nascimento, ai. Lá pela quarta inserção você fica de saco cheio e volta para o menu principal e entra com a opção 3 para consultar !!!
ele lista TODOS os registros que você digitou anteriormente. Perfeito !!!
vc começa a se sentir orgulhoso de si mas vc pensa : “espere vou inserir mais 2 registros para ter certeza” Ai, vc volta para o menu principal e entra com a opção 1 novamente. e insere os DOIS benditos registros.
O PROBLEMA ocorre quando vc manda listar TODOS os registros novamente, ele so te retorna os ultimos 2 registros, ou seja os registros de antes ficam perdidos (Não aparecem mais).
Tente roda-lo e vc vai entender melhor !!!

E a segunda duvida : tem como eu separar o arquivo como no diagrama:
╔═════╗…
║Menu.java╠═╗…╔══════╗-Inclui, Exclui, Consulta, Altera
╚═════╝…╚══╣Pessoa.Java║
…╚══════╝

W

Descobri o que pode ter acontecido

Preste atenção onde vc está declarando e instanciando o objeto Vector pessoa. Vc está declarando dentro do método public static void teste()

public static void teste() { 

	BufferedReader IO=new BufferedReader (new InputStreamReader (System.in)); 
	Vector pessoas = new Vector(); //<=== Repare
	// armazena varias informações sobre uma pessoa 
	.
	.
	.
}

Esse objeto está sendo encarado como um objeto com escopo de método, ou seja, o objeto Vector pessoa só servirá dentro do método public static void teste(). Quando vc sai do método, o que acontece: o objeto é descartado. Toda vez que vc volta para o método public static void menu(), vc descarta esse objeto.
Para que sua aplicação funcione, vc deve declarar o objeto Vetor pessoa como um atributo da classe. Como fazer isso? Deve ser essa a sua pergunta neste momento.
Dica: Logo depois da declaração da classe, declare o objeto. Ex:

class teste { 
	Vector pessoas = new Vector(); //<=== Repare
	.
	.
	.
} // FIM DA CLASSE teste

Assim, o objeto terá não um escopo de método, mas sim, escopo de classe. Toda a sua classe vai enchergar ele.
Acho que isso resolve o seu problema!!!

Falow!!!

R

Muito Obrigado Wanderson !!! mesmo !!! Valew !!! vou tentar implementar e conto aqui se funcionou !!! Mas muito obrigado mesmo !!! :wink: :wink: :wink:

Criado 2 de abril de 2004
Ultima resposta 3 de abr. de 2004
Respostas 4
Participantes 3