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 JavaQuantidade de visualizações: 532 vezes |
Pergunta/Tarefa: O arquivo usado neste exercício pode ser baixado aqui. Dado um arquivo notas_alunos.txt com o seguinte conteúdo: 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 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: 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 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 Resposta/Solução: Veja a resolução comentada deste exercício em Java: 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"); } } } |
![]() |
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 |
Delphi - Como usar o Delphi para verificar se um determinado processo do Windows está sendo executado |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
1º lugar: Java |