tenho uma aplicação de uma agenda bem simple e preciso fazer com q os dados não fiquem só na ram…
import java.io.*;
public class Agenda{
private Pessoa[] contatos;//contatos é a lista
public Agenda(){
contatos=null;//para reservar espaço na memória,quando nada tiver sido inserido
}
/**
* Insere uma pessoa
* @param Pessoa p
*/
public void inserir (Pessoa p){
if (contatos==null){
contatos=new Pessoa[1];//cria espaço para um dado Pessoa e
contatos[0]=p;//coloca-o na posição zero(primeira posição)
}
else {//senão
aumentaCapacidade();//aumenta a capacidade do vetor (no primeiro caso será 1+1=espaço para 2 dados Pessoa)
contatos[contatos.length -1]=p;//faz com que o p (objeto que carrega os dados de Pessoa)seja inserido na última posição(agora será 2)-1,colocando-o agora na posição 1
}
}
/**
* Aumenta a capacidade do vetor de Pessoa
*/
private void aumentaCapacidade(){
Pessoa []auxiliar=new Pessoa[contatos.length+1];
for(int i=0;i<contatos.length;i++){
auxiliar[i]=contatos[i];
}
contatos=auxiliar;//a classe auxiliar serve para receber todos os dados de contatos e adicionar uma posição livre
}
/**
* Exibe todos os contatos da agenda
*/
public void show(){//método para exibir todos os dados já inseridos
System.out.println("********* LISTA DE CONTATOS DA AGENDA ***********");
for (int i=0;i<contatos.length;i++){
System.out.println("Nome:"+contatos[i].getNome());
System.out.println("Telefone"+contatos[i].getFone());
System.out.println("Idade"+contatos[i].getIdade());
System.out.println("*********************************");
}
}
/**
* Busca contato pelo nome n
* @param String n
*/
public void buscaNome (String n) {
boolean achou=false;
for ( int i=0; i <contatos.length; i++)
{
if (contatos[i].getNome().equals(n)) {
System.out.println("fone" + contatos[i].getFone());
achou = true;
}
}
if (!achou){
System.out.println("Nenhum contato com este nome na lista");
}
}
/**
* Busca contato pelo telefone f
* @param String f
*/
public void buscaFone (String f) {
boolean achou = false;
for ( int i=0; i <contatos.length; i++)
{
if (contatos[i].getFone().equals(f)) {
System.out.println("Nome" + contatos[i].getNome());
achou = true;
}
}
if (!achou){
System.out.println("Nenhum contato com este fone na lista");
}
}
/**
* Busca contato pelo telefone f
* @param int d
*/
public void buscaId (int d) {
boolean achou = false;
for ( int i=0; i <contatos.length; i++){
if (contatos[i].getIdade()==d) {
System.out.println("Nome" + contatos[i].getNome() + " Fone: " + contatos[i].getFone());
achou = true;
}
}
if (!achou){
System.out.println("Nenhum contato com esta idade na lista");
}
}
/**
* Ler dados de pessoas
*/
public void lerDados(){
BufferedReader in =new BufferedReader(new InputStreamReader(System.in));//var in do tipo bufferReaderfuncao usada quando utiliza-se um método de impressão e leitura
Pessoa p;
String opcao="", s="",r="";
int i=0;
do{
try{//usado para teste quando tiver entrada e leitura onde o usuário pode digitar opções inválidas
System.out.print("Digite o nome: ");
s=in.readLine();
System.out.print("Digite o telefone: ");
r=in.readLine();
System.out.print("Idade: ");
i=Integer.parseInt(in.readLine());
p=new Pessoa(s,r,i);
if (i>=0){
inserir(p);
gravar();
}
System.out.print("DESEJA SAIR? (S/N): ");
opcao=in.readLine();
//p.nome="Ana";//não pode fazer isto porque eu estou fora da classe e nome é um atributo privado
} catch(Exception e){
System.out.println("Erro de leitura");
}
}while ((opcao.equals("N"))||(opcao.equals("n")));//equals não pode ser usado para int,float..
}
/**
* Apresenta as opcoes de busca para o usuario
*/
public void busca(){
BufferedReader in =new BufferedReader(new InputStreamReader(System.in));//var in do tipo bufferReaderfuncao usada quando utiliza-se um método de impressão e leitura
int opcao = 0, id=0;
String n="";
do{
try{
System.out.println("(1) Busca por nome");
System.out.println("(2) Buscar por telefone");
System.out.println("(3) Busca por idade");
System.out.println("(4) Voltar");
opcao=Integer.parseInt(in.readLine());//tem que converter pois a entrada do teclado é string*readLine só lê inteiro e string
switch(opcao){
case 1:
System.out.println("Digite o nome:");
n=in.readLine();
buscaNome(n);
break;
case 2:
System.out.println("Digite o telefone:");
n=in.readLine();
buscaFone(n);
break;
case 3:
System.out.println("Digite a idade:");
id=Integer.parseInt(in.readLine());
buscaId(id);
break;
default:
System.out.println("Opção inválida");
}
}catch (Exception e){
System.out.println("Erro de leitura de dados");
}
}while (opcao!=4);
}
/**
* Método para excluir dados
*/
public void excluir(){
BufferedReader in =new BufferedReader(new InputStreamReader(System.in));
String opcao=" ";
try{
for(int i=0;i<contatos.length;i++){
System.out.println(contatos[i].getNome() +contatos[i].getFone() + contatos[i].getIdade());
System.out.println("Deseja excluir? <S> <N>");
opcao=in.readLine();
if(opcao.equals("S") || opcao.equals("s")){
int k=0;
Pessoa[]aux=new Pessoa[contatos.length - 1];
for(int j=0;j<contatos.length;j++){
if(j!=i){
aux[k]=contatos[j];
k++;
}else {i--;}
}contatos=aux;
}
}
}catch (Exception e){
System.out.println("Erro de leitura de dados");
}
}
/**
* Método para gravar dados
*/
public void gravar(){
try{
File dados =new File("C:\\Documents and Settings\\RODRIGO\\Desktop\\menu\\dados\\");
dados.mkdir();
File arquivo = new File(dados, "info.txt");
FileOutputStream out = new FileOutputStream(arquivo);
out.write (new byte [] {'i','n','f','o'});
}catch (Exception e){
System.out.println("Arquivo gravado");
}
}
}
Alguem pode me ajudar com isso???
[size=“11”][color=“red”]* Editado: Lembre-se de utilizar BBCode em seus códigos - Carneiro[/color][/size] :joia: