diff --git a/Exception Handling/ManipulacaoCSV/com.manipulacao-csv.java/ListaPessoas.java b/Exception Handling/ManipulacaoCSV/com.manipulacao-csv.java/ListaPessoas.java new file mode 100644 index 0000000..058fde7 --- /dev/null +++ b/Exception Handling/ManipulacaoCSV/com.manipulacao-csv.java/ListaPessoas.java @@ -0,0 +1,52 @@ +import java.io.BufferedReader; +import java.io.FileReader; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + + +public class ListaPessoas { + + public static List lerCsvEConverteParaPessoas(String arquivoCSV) { + List pessoasList = new ArrayList<>();; + try (BufferedReader br = new BufferedReader(new FileReader(arquivoCSV))) { + String linha; + boolean primeiraLinha = true; + while ((linha = br.readLine()) != null) { + if (primeiraLinha) { + primeiraLinha = false; + continue; // Ignora o cabeçalho + } + String[] campos = linha.split(","); + if (campos.length == 3) { + String nome = campos[0].trim(); + int idade = Integer.parseInt(campos[1].trim()); + String email = campos[2].trim(); + Pessoa pessoa = new Pessoa(nome, idade, email); + pessoasList.add(pessoa); + } + } + } catch (IOException e) { + System.out.println("Erro ao ler o arquivo: " + e.getMessage()); + } + return pessoasList; + } + + public static double calcularMediaIdade(List pessoaList){ +return pessoas.stream() + .mapToDouble(Pessoa::getIdade) + .average() + .orElse(0.0); + } + + public static void main(String[] args) { + String pathArquivoCsv = "Exception Handling/ManipulacaoCSV/com.manipulacao-csv.java/dados.csv"; + List pessoas = PreencheLista(pathArquivoCsv); + if(!pessoas.isEmpty()) { + pessoas.forEach(System.out::println); + System.out.println("Média de idade das pessoas: "+ calcularMediaIdade(pessoas)); + } else { + System.out.println("Arquivo está vazio"); + } + } +} diff --git a/Exception Handling/ManipulacaoCSV/com.manipulacao-csv.java/Pessoa.java b/Exception Handling/ManipulacaoCSV/com.manipulacao-csv.java/Pessoa.java new file mode 100644 index 0000000..0f98fb7 --- /dev/null +++ b/Exception Handling/ManipulacaoCSV/com.manipulacao-csv.java/Pessoa.java @@ -0,0 +1,40 @@ + +public class Pessoa{ + private String nome; + private int idade; + private String email; + + public Pessoa(String nome, int idade, String email) { + this.nome = nome; + this.idade = idade; + this.email = email; + } + + public String getNome() { + return nome; + } + + public int getIdade() { + return idade; + } + + public String getEmail() { + return email; + } + + @Override + public java.lang.String toString() { + return "Pessoa{" + + "nome='" + nome + '\'' + + ", idade=" + idade + + ", email='" + email + '\'' + + '}'; + } + + public static void main(String[] args) { + Pessoa pessoa1 = new Pessoa("Fran", 28, "fran@email.com"); + + System.out.println(pessoa1); + } +} + diff --git a/Exception Handling/ManipulacaoCSV/com.manipulacao-csv.java/README.md b/Exception Handling/ManipulacaoCSV/com.manipulacao-csv.java/README.md new file mode 100644 index 0000000..400dcda --- /dev/null +++ b/Exception Handling/ManipulacaoCSV/com.manipulacao-csv.java/README.md @@ -0,0 +1,45 @@ +# Programa para Leitura e Cálculo da Média de Idade a partir de um arquivo CSV + +Este é um programa Java que tem como objetivo ler dados de um arquivo CSV chamado "dados.csv", onde cada linha do arquivo representa informações de uma pessoa, contendo os campos: Nome, Idade e Email. O programa realiza as seguintes tarefas: + +1. **Ler o arquivo "dados.csv"**: O programa abre o arquivo "dados.csv" e lê suas linhas. + +2. **Separar os campos**: Para cada linha do arquivo, o programa separa os campos Nome, Idade e Email. + +3. **Armazenar os registros**: Os registros lidos são armazenados em uma estrutura de dados apropriada, neste caso, uma lista de objetos da classe "Pessoa". + +4. **Calcular e imprimir a média de idade**: O programa calcula a média de idade das pessoas listadas e imprime o resultado no console. + +## Arquivos Necessários + +Para executar o programa, você precisa dos seguintes arquivos: + +- `ListaPessoas.java`: O código Java que realiza a leitura do arquivo CSV, cálculo da média de idade e trata exceções. +- `Pessoa.java`: A classe que define a estrutura de dados de uma pessoa. +- `dados.csv`: O arquivo CSV contendo os dados das pessoas. + +## Uso + +Certifique-se de que os arquivos `ListaPessoas.java`, `Pessoa.java` e `dados.csv` estão no mesmo diretório. Para executar o programa, siga os seguintes passos: + +1. Compile o código Java: + + ```shell + javac ListaPessoas.java + ``` + +2. Execute o programa: + + ```shell + java ListaPessoas + ``` + +O programa lerá o arquivo "dados.csv", calculará a média de idade das pessoas listadas e imprimirá os resultados no console. + +Certifique-se de que os dados no arquivo "dados.csv" estão no formato correto, com cada linha contendo Nome, Idade e Email, separados por vírgulas. + +O programa trata exceções relacionadas à leitura do arquivo e à conversão de dados. Se ocorrerem problemas ao ler o arquivo, você verá uma mensagem de erro no console, informando sobre o erro. + +Se o arquivo "dados.csv" estiver em um diretório diferente, ajuste o caminho no código-fonte em `String pathArquivoCsv` para refletir o local correto do arquivo. + +Lembre-se de que este programa ignora a primeira linha do arquivo CSV, que é considerada o cabeçalho. diff --git a/Exception Handling/ManipulacaoCSV/com.manipulacao-csv.java/dados.csv b/Exception Handling/ManipulacaoCSV/com.manipulacao-csv.java/dados.csv new file mode 100644 index 0000000..cecd11c --- /dev/null +++ b/Exception Handling/ManipulacaoCSV/com.manipulacao-csv.java/dados.csv @@ -0,0 +1,11 @@ +Nome,Idade,Email +Ada Lovelace,36,ada@email.com +Grace Hopper,55,grace@email.com +Hedy Lamarr,65,hedy@email.com +Katherine Johnson,101,kath@email.com +Radia Perlman,70,radia@email.com +Shafi Goldwasser,68,shafi@email.com +Adele Goldberg,74,adele@@email.com +Rear Admiral Grace Murray Hopper,85, rear@email.com +Margaret Hamilton,85,margaret@email.com +Susan Kare,65,susan@email.com \ No newline at end of file diff --git a/java-trainning.iml b/java-trainning.iml index 82963c2..a1cef72 100644 --- a/java-trainning.iml +++ b/java-trainning.iml @@ -4,6 +4,7 @@ +