From d1ebb732b58901dd47ff49f3a413b2aafc284825 Mon Sep 17 00:00:00 2001 From: Franciele Batista Date: Tue, 3 Oct 2023 08:26:51 -0300 Subject: [PATCH 01/10] =?UTF-8?q?cria=C3=A7=C3=A3o=20do=20arquivo=20dados.?= =?UTF-8?q?csv=20com=20as=20informacoes=20das=20pessoas?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Exception Handling/ManipulacaoCSV/dados.csv | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 Exception Handling/ManipulacaoCSV/dados.csv diff --git a/Exception Handling/ManipulacaoCSV/dados.csv b/Exception Handling/ManipulacaoCSV/dados.csv new file mode 100644 index 0000000..cecd11c --- /dev/null +++ b/Exception Handling/ManipulacaoCSV/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 From 864abb1df20bbc9b504cfff2ff0506bd002e94a9 Mon Sep 17 00:00:00 2001 From: Franciele Batista Date: Tue, 3 Oct 2023 08:32:14 -0300 Subject: [PATCH 02/10] criacao da classe pessoa --- .../com.manipulacao-csv.java/Pessoa.java | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 Exception Handling/ManipulacaoCSV/com.manipulacao-csv.java/Pessoa.java 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..105b135 --- /dev/null +++ b/Exception Handling/ManipulacaoCSV/com.manipulacao-csv.java/Pessoa.java @@ -0,0 +1,39 @@ + +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') + } + +} + From e2399ba4653633666e176fd12e1f2e023a330640 Mon Sep 17 00:00:00 2001 From: Franciele Batista Date: Tue, 3 Oct 2023 22:59:27 -0300 Subject: [PATCH 03/10] Anjuste para que o os arquivos java fossem reconhecidos como classes java. --- java-trainning.iml | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 java-trainning.iml diff --git a/java-trainning.iml b/java-trainning.iml new file mode 100644 index 0000000..6014d39 --- /dev/null +++ b/java-trainning.iml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file From 14ecdc4c4b27080e13257f99b0721ed10ef04d42 Mon Sep 17 00:00:00 2001 From: Franciele Batista Date: Tue, 3 Oct 2023 23:00:43 -0300 Subject: [PATCH 04/10] Alterando o lugar que o arquivo dados.csv ficou localizado --- .../ManipulacaoCSV/{ => com.manipulacao-csv.java}/dados.csv | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename Exception Handling/ManipulacaoCSV/{ => com.manipulacao-csv.java}/dados.csv (100%) diff --git a/Exception Handling/ManipulacaoCSV/dados.csv b/Exception Handling/ManipulacaoCSV/com.manipulacao-csv.java/dados.csv similarity index 100% rename from Exception Handling/ManipulacaoCSV/dados.csv rename to Exception Handling/ManipulacaoCSV/com.manipulacao-csv.java/dados.csv From 2ed930d6f1c209d0bfdff57f20c4352583b1b366 Mon Sep 17 00:00:00 2001 From: Franciele Batista Date: Tue, 3 Oct 2023 23:03:26 -0300 Subject: [PATCH 05/10] =?UTF-8?q?cria=C3=A7=C3=A3o=20da=20classe=20pessoa?= =?UTF-8?q?=20e=20da=20classe=20lista=20de=20pessoas=20que=20contem=20as?= =?UTF-8?q?=20resolu=C3=A7=C3=B5es=20do=20issue?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ListaPessoas.java | 62 +++++++++++++++++++ .../com.manipulacao-csv.java/Pessoa.java | 5 +- 2 files changed, 65 insertions(+), 2 deletions(-) create mode 100644 Exception Handling/ManipulacaoCSV/com.manipulacao-csv.java/ListaPessoas.java 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..731a5a8 --- /dev/null +++ b/Exception Handling/ManipulacaoCSV/com.manipulacao-csv.java/ListaPessoas.java @@ -0,0 +1,62 @@ +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 PreencheLista(String arquivoCSV) { + List pessoasList = null; + try (BufferedReader br = new BufferedReader(new FileReader(arquivoCSV))) { + pessoasList = new ArrayList<>(); + 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){ + if(!pessoaList.isEmpty()){ + int somaIdades = 0; + for (Pessoa p : pessoaList){ + somaIdades = somaIdades + p.getIdade(); + } + return (double) somaIdades / pessoaList.size(); + } else { + return 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()){ + for (Pessoa p: pessoas){ + System.out.println(p); + } + + double mediaIdade = calcularMediaIdade(pessoas); + System.out.println("Média de idade das pessoas: "+mediaIdade); + } 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 index 105b135..0f98fb7 100644 --- a/Exception Handling/ManipulacaoCSV/com.manipulacao-csv.java/Pessoa.java +++ b/Exception Handling/ManipulacaoCSV/com.manipulacao-csv.java/Pessoa.java @@ -32,8 +32,9 @@ public java.lang.String toString() { } public static void main(String[] args) { - Pessoa pessoa1 = new pessoa('Fran', 28, 'fran@email.com') - } + Pessoa pessoa1 = new Pessoa("Fran", 28, "fran@email.com"); + System.out.println(pessoa1); + } } From 2cbeddd724833ae45e3fa4f8409fd127316eed61 Mon Sep 17 00:00:00 2001 From: Franciele Oliveira <32960110+fran-olv@users.noreply.github.com> Date: Thu, 19 Oct 2023 16:57:26 -0300 Subject: [PATCH 06/10] sugestao para utilizar collection Co-authored-by: isdrchagas <85903568+isdrchagas@users.noreply.github.com> --- .../com.manipulacao-csv.java/ListaPessoas.java | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/Exception Handling/ManipulacaoCSV/com.manipulacao-csv.java/ListaPessoas.java b/Exception Handling/ManipulacaoCSV/com.manipulacao-csv.java/ListaPessoas.java index 731a5a8..506ed9e 100644 --- a/Exception Handling/ManipulacaoCSV/com.manipulacao-csv.java/ListaPessoas.java +++ b/Exception Handling/ManipulacaoCSV/com.manipulacao-csv.java/ListaPessoas.java @@ -34,15 +34,10 @@ public static List PreencheLista(String arquivoCSV) { } public static double calcularMediaIdade(List pessoaList){ - if(!pessoaList.isEmpty()){ - int somaIdades = 0; - for (Pessoa p : pessoaList){ - somaIdades = somaIdades + p.getIdade(); - } - return (double) somaIdades / pessoaList.size(); - } else { - return 0.0; - } +return pessoas.stream() + .mapToDouble(Pessoa::getIdade) + .average() + .orElse(0.0); } public static void main(String[] args) { From 05992c9f57b083fd301c8ac2fb4dbcbdd4ff2e93 Mon Sep 17 00:00:00 2001 From: Franciele Oliveira <32960110+fran-olv@users.noreply.github.com> Date: Thu, 19 Oct 2023 16:57:58 -0300 Subject: [PATCH 07/10] =?UTF-8?q?sugest=C3=A3o=20para=20utilizar=20forEach?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: isdrchagas <85903568+isdrchagas@users.noreply.github.com> --- .../com.manipulacao-csv.java/ListaPessoas.java | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/Exception Handling/ManipulacaoCSV/com.manipulacao-csv.java/ListaPessoas.java b/Exception Handling/ManipulacaoCSV/com.manipulacao-csv.java/ListaPessoas.java index 506ed9e..a05acd2 100644 --- a/Exception Handling/ManipulacaoCSV/com.manipulacao-csv.java/ListaPessoas.java +++ b/Exception Handling/ManipulacaoCSV/com.manipulacao-csv.java/ListaPessoas.java @@ -43,13 +43,9 @@ public static double calcularMediaIdade(List pessoaList){ public static void main(String[] args) { String pathArquivoCsv = "Exception Handling/ManipulacaoCSV/com.manipulacao-csv.java/dados.csv"; List pessoas = PreencheLista(pathArquivoCsv); - if(!pessoas.isEmpty()){ - for (Pessoa p: pessoas){ - System.out.println(p); - } - - double mediaIdade = calcularMediaIdade(pessoas); - System.out.println("Média de idade das pessoas: "+mediaIdade); + 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"); } From f7c88cb553cd2657f53f59ea2dacf959b682e08b Mon Sep 17 00:00:00 2001 From: Franciele Oliveira <32960110+fran-olv@users.noreply.github.com> Date: Thu, 19 Oct 2023 16:58:35 -0300 Subject: [PATCH 08/10] =?UTF-8?q?Sugest=C3=A3o=20de=20trocar=20o=20nome=20?= =?UTF-8?q?do=20metodo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: isdrchagas <85903568+isdrchagas@users.noreply.github.com> --- .../ManipulacaoCSV/com.manipulacao-csv.java/ListaPessoas.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Exception Handling/ManipulacaoCSV/com.manipulacao-csv.java/ListaPessoas.java b/Exception Handling/ManipulacaoCSV/com.manipulacao-csv.java/ListaPessoas.java index a05acd2..8266596 100644 --- a/Exception Handling/ManipulacaoCSV/com.manipulacao-csv.java/ListaPessoas.java +++ b/Exception Handling/ManipulacaoCSV/com.manipulacao-csv.java/ListaPessoas.java @@ -7,7 +7,7 @@ public class ListaPessoas { - public static List PreencheLista(String arquivoCSV) { + public static List lerCsvEConverteParaPessoas(String arquivoCSV) { List pessoasList = null; try (BufferedReader br = new BufferedReader(new FileReader(arquivoCSV))) { pessoasList = new ArrayList<>(); From 1d43381e9cdff8aab55d6140aa074d06fca4b755 Mon Sep 17 00:00:00 2001 From: Franciele Oliveira <32960110+fran-olv@users.noreply.github.com> Date: Wed, 1 Nov 2023 10:54:56 -0300 Subject: [PATCH 09/10] trocando o lugar que inicializa a lista --- .../ManipulacaoCSV/com.manipulacao-csv.java/ListaPessoas.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Exception Handling/ManipulacaoCSV/com.manipulacao-csv.java/ListaPessoas.java b/Exception Handling/ManipulacaoCSV/com.manipulacao-csv.java/ListaPessoas.java index 8266596..058fde7 100644 --- a/Exception Handling/ManipulacaoCSV/com.manipulacao-csv.java/ListaPessoas.java +++ b/Exception Handling/ManipulacaoCSV/com.manipulacao-csv.java/ListaPessoas.java @@ -8,9 +8,8 @@ public class ListaPessoas { public static List lerCsvEConverteParaPessoas(String arquivoCSV) { - List pessoasList = null; + List pessoasList = new ArrayList<>();; try (BufferedReader br = new BufferedReader(new FileReader(arquivoCSV))) { - pessoasList = new ArrayList<>(); String linha; boolean primeiraLinha = true; while ((linha = br.readLine()) != null) { From f7479b169a69445ef04f94cafc409f19be8a3536 Mon Sep 17 00:00:00 2001 From: Franciele Oliveira <32960110+fran-olv@users.noreply.github.com> Date: Wed, 1 Nov 2023 11:01:51 -0300 Subject: [PATCH 10/10] =?UTF-8?q?cria=C3=A7=C3=A3o=20do=20README.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com.manipulacao-csv.java/README.md | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 Exception Handling/ManipulacaoCSV/com.manipulacao-csv.java/README.md 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.