Ofereço ajuda em Java, C/C++, Python, C#, LISP, AutoLisp, AutoCAD
+55 (062) 98553-6711
Ofereço ajuda em PHP, Python, C#, JavaScript, Laravel, Google Ads e SEO
+55 (062) 98243-1195

E-Book 350 Exercícios Resolvidos de Java - PDF com 500 páginas
Domine lógica de programação e a linguagem Java com o nosso E-Book 350 Exercícios Exercícios de Java, para você estudar onde e quando quiser. Este e-book contém exercícios resolvidos abrangendo os tópicos: Java básico, matemática e estatística, programação dinâmica, strings e caracteres, entrada e saída, estruturas condicionais, vetores e matrizes, funções, laços, recursividade, internet, arquivos e diretórios, programação orientada a objetos e muito mais.
Ver Conteúdo do E-book Apenas R$ 19,90
Você está aqui: Java ::: Desafios e Lista de Exercícios Resolvidos ::: Arquivos e Diretórios

Como ler e gravar arquivos texto com campos de tamanho fixo em Java - Nomes e notas de alunos aprovados e reprovados - Exercícios Resolvidos de Java

Quantidade de visualizações: 478 vezes
Pergunta/Tarefa:

O arquivo usado neste exercício pode ser baixado aqui.

Dado um arquivo notas_alunos.txt com o seguinte conteúdo:

1
2
3
4
5
6
7
ANA SANTOS             8,3   7,9
ANDRE MIRANDA         10,0   8,4
CINTIA NUNES           6,2   5,8
FABRICIO SILVA         3,6   6,2
GABRIELA KARLA         8,3  10,0
JOAO DOS SANTOS        6,8   6,3
MILENA FERNANDA       10,0   8,1
Este arquivo contém os nomes de 7 alunos e suas notas N1 e N2. Note que este arquivo possui campos de tamanhos fixos. O campo nome possui o tamanho de 20 caracteres e os campos das notas possuem o tamanho de 6 caracteres cada. O campo nome está alinhado à esquerda enquanto as notas estão alinhadas à direita.

Escreva um programa Java que abra este arquivo e gere outros dois arquivos, com os nomes notas_alunos_aprovados.txt e notas_alunos_reprovados.txt.

O arquivo notas_alunos_aprovados.txt deverá conter os alunos aprovados e o arquivo notas_alunos_reprovados.txt vai conter os alunos reprovados. Para ser aprovado a média aritmética das notas N1 e N2 deverá ser maior ou igual a 7,0. Os arquivos gerados deverão conter um campo com tamanho de 6 caracteres dedicado à média do aluno, alinhada à direita.

Para deixar a explicação do exercício ainda mais assertiva, veja o conteúdo do arquivo notas_alunos_aprovados.txt gerado pela resolução que fizemos:

1
2
3
4
ANA SANTOS             8,3   7,9   8,1
ANDRE MIRANDA         10,0   8,4   9,2
GABRIELA KARLA         8,3  10,0   9,2
MILENA FERNANDA       10,0   8,1   9,1
E aqui está o conteúdo do arquivo notas_alunos_reprovados.txt:

1
2
3
CINTIA NUNES           6,2   5,8   6,0
FABRICIO SILVA         3,6   6,2   4,9
JOAO DOS SANTOS        6,8   6,3   6,6
Como observação adicional, veja que as notas possuem vírgulas, e não pontos. Seu código deverá levar isso em conta na hora de efetuar os cálculos.

Resposta/Solução:

Veja a resolução comentada deste exercício em Java:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
----------------------------------------------------------------------
Se precisar de ajuda para ajustar o código abaixo de acordo com as
suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar)
 
Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar
a manter o site livre de anúncios. Ficaremos eternamente gratos ;-)
Nosso PIX é: osmar@arquivodecodigos.com.br
----------------------------------------------------------------------
 
package estudos;
 
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
 
public class Estudos {
  public static void main(String[] args) {
    // vamos construir uma instância da classe BufferedReader
    // para ler o arquivo de entrada
    BufferedReader arquivo_notas_alunos = null;
    // vamos construir uma instância da classe BufferedWriter
    // para escrever no arquivo de aprovados
    BufferedWriter arquivo_aprovados = null;
    // vamos construir uma instância da classe BufferedWriter
    // para escrever no arquivo de reprovados
    BufferedWriter arquivo_reprovados = null;
     
    // nomes e locais dos arquivos
    String notas_alunos = "C:\\estudos_java\\notas_alunos.txt";
    String alunos_aprovados = "C:\\estudos_java\\notas_alunos_aprovados.txt";
    String alunos_reprovados = "C:\\estudos_java\\notas_alunos_reprovados.txt";
     
    // vamos ler o conteúdo do arquivo de entrada, uma linha
    // de cada vez
    String linha;
    try {
      // agora abrimos o arquivo de entrada
      arquivo_notas_alunos = new BufferedReader(new FileReader(notas_alunos));
      // abrimos também o arquivo de saída alunos aprovados
      arquivo_aprovados = new BufferedWriter(new FileWriter(alunos_aprovados));
      // e também o arquivo de saída alunos reprovados
      arquivo_reprovados = new BufferedWriter(new FileWriter(alunos_reprovados));
       
      // enquanto houver linhas a serem lidas
      while((linha = arquivo_notas_alunos.readLine()) != null){
        // agora precisamos tratar os campos do arquivo
        // o campo nome contém 20 caracteres
        String nome = linha.substring(0, 22);
        // o campo N1 contém 6 caracteres
        // precisamos retirar os espaços deste campo e trocar a vírgula
        // pelo ponto
        String n1_string = linha.substring(22, 26);
        double n1 = Double.parseDouble(n1_string.trim().replace(",", "."));
        // o campo N2 contém 6 caracteres
        // precisamos retirar os espaços deste campo e trocar a vírgula
        // pelo ponto
        String n2_string = linha.substring(26, 32);
        double n2 = Double.parseDouble(n2_string.trim().replace(",", "."));
         
        // agora vamos calcular a média do aluno
        double media = (n1 + n2) / 2;
        // precisamos configurar a string da média
        String media_string = String.format("%1$,6.1f", media);
        // o aluno foi aprovado?
        if(media >= 7.0){
          // vamos escrever no arquivo de aprovados
          arquivo_aprovados.write(nome + n1_string +
            n2_string + media_string + "\r\n");
        }
        else{
          // vamos escrever no arquivo de reprovados
          arquivo_reprovados.write(nome + n1_string +
            n2_string + media_string + "\r\n");
        }
      }
       
      // fecha o arquivo de saída dos reprovados
      arquivo_reprovados.close();
      // fecha o arquivo de saída dos aprovados
      arquivo_aprovados.close();
      // fecha o arquivo de entrada
      arquivo_notas_alunos.close();
       
      // mostra uma mensagem de sucesso
      System.out.println("Arquivos gerados com sucesso.");
    }
    catch (FileNotFoundException e) {
      System.err.println("\nArquivo não encontrado\n");
    }
    catch (IOException e) {
      System.err.println("\nNão foi possível abrir o arquivo\n");
    }
  }
}


Link para compartilhar na Internet ou com seus amigos:

Mais Desafios de Programação e Exercícios e Algoritmos Resolvidos de Java

Veja mais Dicas e truques de Java

Dicas e truques de outras linguagens

E-Books em PDF

E-Book 650 Dicas, Truques e Exercícios Resolvidos de Python - PDF com 1.200 páginas
Domine lógica de programação e a linguagem Python com o nosso E-Book 650 Dicas, Truques e Exercícios Exercícios de Python, para você estudar onde e quando quiser.

Este e-book contém dicas, truques e exercícios resolvidos abrangendo os tópicos: Python básico, matemática e estatística, banco de dados, programação dinâmica, strings e caracteres, entrada e saída, estruturas condicionais, vetores e matrizes, funções, laços, recursividade, internet, arquivos e diretórios, programação orientada a objetos e muito mais.
Ver Conteúdo do E-book
E-Book 350 Exercícios Resolvidos de Java - PDF com 500 páginas
Domine lógica de programação e a linguagem Java com o nosso E-Book 350 Exercícios Exercícios de Java, para você estudar onde e quando quiser.

Este e-book contém exercícios resolvidos abrangendo os tópicos: Java básico, matemática e estatística, programação dinâmica, strings e caracteres, entrada e saída, estruturas condicionais, vetores e matrizes, funções, laços, recursividade, internet, arquivos e diretórios, programação orientada a objetos e muito mais.
Ver Conteúdo do E-book

Linguagens Mais Populares

1º lugar: Java
2º lugar: Python
3º lugar: C#
4º lugar: PHP
5º lugar: C
6º lugar: Delphi
7º lugar: JavaScript
8º lugar: C++
9º lugar: VB.NET
10º lugar: Ruby



© 2025 Arquivo de Códigos - Todos os direitos reservados
Neste momento há 37 usuários muito felizes estudando em nosso site.