Skip to content

Instantly share code, notes, and snippets.

@washingtonsoares
Created October 26, 2014 00:45
Show Gist options
  • Save washingtonsoares/11257d623117d4292c51 to your computer and use it in GitHub Desktop.
Save washingtonsoares/11257d623117d4292c51 to your computer and use it in GitHub Desktop.
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Scanner;
public class Main {
public static void main(String[] args) throws IOException {
ArrayList<String> agenda = new ArrayList();
Scanner ler = new Scanner(System.in);
int opcao;
importar(agenda);
do {
System.out.printf("**** Menu Principal *****\n");
System.out.printf("[ 1 ] Incluir Contato\n");
System.out.printf("[ 2 ] Excluir Contato\n");
System.out.printf("[ 3 ] Listar Contatos\n");
System.out.printf("[ 4 ] Pesquisar Contato\n");
System.out.printf("[ 0 ] Encerrar o Programa\n");
System.out.printf("\nOpção Desejada: ");
opcao = ler.nextInt();
switch (opcao) {
case 1: incluir(agenda); break;
case 2: excluir(agenda); break;
case 3: listar(agenda); break;
case 4: pesquisar(agenda);
}
System.out.printf("\n\n");
} while (opcao != 0);
exportar(agenda);
}
public static void importar(ArrayList<String> agenda) {
try {
FileReader arq = new FileReader("agenda.txt");
BufferedReader lerArq = new BufferedReader(arq);
String linha = lerArq.readLine(); // lê a primeira linha
// a variável "linha" recebe o valor "null" quando o processo
// de repetição atingir o final do arquivo texto
while (linha != null) {
agenda.add(linha);
linha = lerArq.readLine(); // lê da segunda até a última linha
}
arq.close();
} catch (IOException e) {
System.err.printf("Erro na abertura do arquivo: %s.",
e.getMessage());
}
}
public static void exportar(ArrayList<String> agenda)
throws IOException {
FileWriter arq = new FileWriter("agenda.txt");
PrintWriter gravarArq = new PrintWriter(arq);
int i, n = agenda.size();
for (i=0; i<n; i++) {
gravarArq.printf("%s%n", agenda.get(i));
}
gravarArq.close();
}
public static void incluir(ArrayList<String> agenda) {
Scanner ler = new Scanner(System.in);
String nome, telefone;
System.out.printf("\nInforme o nome do contato:\n");
nome = ler.nextLine();
System.out.printf("\nInforme o telefone do contato:\n");
telefone = ler.nextLine();
// grava os dados no final da "lista"
agenda.add(nome + ";" + telefone);
}
public static void excluir(ArrayList<String> agenda) {
Scanner ler = new Scanner(System.in);
int i;
listar(agenda);
System.out.printf("\nInforme a posição a ser excluída:\n");
i = ler.nextInt();
try {
agenda.remove(i);
} catch (IndexOutOfBoundsException e) {
// exceção lançada para indicar que um índice (i)
// está fora do intervalo válido (de 0 até agenda.size()-1)
System.out.printf("\nErro: posição inválida (%s).\n\n",
e.getMessage());
}
}
public static void listar(ArrayList<String> agenda) {
System.out.printf("\nListadando os itens da Agenda:\n");
int i, n = agenda.size();
for (i=0; i<n; i++) {
System.out.printf("Posição %d- %s\n", i, agenda.get(i));
}
System.out.printf("---------------------------------------");
}
public static void pesquisar(ArrayList<String> agenda) {
Scanner ler = new Scanner(System.in);
String s;
System.out.printf("\nInforme o nome do contato:\n");
s = ler.nextLine();
int i, n = agenda.size();
s = s.toUpperCase();
String dados[];
for (i=0; i<n; i++) {
// informando "joão", por exemplo, na entrada serão mostrados
// todos os contatos que possuem "joão" no nome
if (agenda.get(i).toUpperCase().indexOf(s) != -1) {
dados = agenda.get(i).split(";");
System.out.printf("\nNome....: %s", dados[0]);
System.out.printf("\nTelefone: %s\n", dados[1]);
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment