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: 442 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: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- 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"); } } } |
![]() |
Java ::: Classes, Controles e Componentes ::: JSplitPane |
Java Swing - Como usar a classe JSplitPane para dividir o espaço ocupado pelos componentes de suas aplicações Java SwingQuantidade de visualizações: 10429 vezes |
A classe JSplitPane é usada quando precisamos controlar o espaço ocupado por dois ou mais componentes. Objetos desta classe podem ser redimensionados, de modo a aumentar ou diminuir a área ocupada por um dos componentes. Veja a posição desta classe na hierarquia de classes Java:java.lang.Object java.awt.Component java.awt.Container javax.swing.JComponent javax.swing.JSplitPane No trecho de código abaixo você verá como é possível dividir a área ocupada por duas áreas de texto (JTextArea). Execute a aplicação e experimente aumentar ou diminuir o espaço ocupado pelos componentes: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- import javax.swing.*; import java.awt.*; public class Estudos extends JFrame{ public Estudos(){ super("Como usar a classe JSplitPane"); // primeira área de texto JTextArea textArea1 = new JTextArea(5, 30); textArea1.setText("Sou a área de texto 1."); JScrollPane sPane1 = new JScrollPane(textArea1); // segunda área de texto JTextArea textArea2 = new JTextArea(5, 30); textArea2.setText("Sou a área de texto 2."); JScrollPane sPane2 = new JScrollPane(textArea2); // Cria o JSplitPane JSplitPane splitPane = new JSplitPane( JSplitPane.HORIZONTAL_SPLIT, sPane1, sPane2); add(splitPane, BorderLayout.CENTER); setSize(300, 150); setVisible(true); } public static void main(String args[]){ Estudos app = new Estudos(); app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } } Ao executar esta aplicação Java Swing nós teremos o seguinte resultado: ![]() |
Java ::: Desafios e Lista de Exercícios Resolvidos ::: Arrays e Matrix (Vetores e Matrizes) |
Exercícios Resolvidos de Java - Declarar e construir uma matriz de 10 int, pedir ao usuário para informar os valores dos elementos, mostrar a média dos valores informados e a quantidade de valores acima da médiaQuantidade de visualizações: 13804 vezes |
Pergunta/Tarefa: Escreva um programa Java console ou GUI que declara e constrói uma matriz de 10 inteiros. Em seguida peça ao usuário para informar os 10 valores e armazene-os na matriz. Finalmente obtenha a média aritmética dos valores informados e mostre quantos valores estão acima da média. Seu programa deverá exibir a seguinte saída (no caso de uma aplicação Console): Informe o 1º valor: 4 Informe o 2º valor: 12 Informe o 3º valor: 9 Informe o 4º valor: 6 Informe o 5º valor: 4 Informe o 6º valor: 3 Informe o 7º valor: 7 Informe o 8º valor: 2 Informe o 9º valor: 3 Informe o 10º valor: 1 A média dos valores é: 5.0 Quantidade de valores acima da média: 4 Resposta/Solução: Veja a resolução comentada deste exercício usando Java console: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- package estudos; import java.util.Scanner; public class Main { public static void main(String[] args) { // vamos declarar e instancia um objeto da classe Scanner Scanner entrada = new Scanner(System.in); // vamos declarar e construir uma matriz de 10 ints int valores[] = new int[10]; double media; // média dos valores int soma = 0; // soma dos valores lidos int quantAcimaMedia = 0; // quantidade de valores acima da média // vamos solicitar ao usuário que informe os 10 valores inteiros // e vamos armazená-los na matriz for(int i = 0; i < valores.length; i++){ System.out.print("Informe o " + (i + 1) + "º valor: "); int valor = Integer.parseInt(entrada.nextLine()); valores[i] = valor; // vamos adicionar este valor à soma soma = soma + valor; } // vamos obter a média dos valores lidos media = (soma / valores.length); // agora precisamos obter a quantidade de valores acima da média for(int i = 0; i < valores.length; i++){ if(valores[i] > media){ quantAcimaMedia++; } } // vamos exibir os resultados System.out.println("A média dos valores é: " + media); System.out.println("Quantidade de valores acima da média: " + quantAcimaMedia); } } |
Java ::: Dicas & Truques ::: Arquivos e Diretórios |
Como renomear um arquivo em Java usando a função renameTo() da classe FileQuantidade de visualizações: 768 vezes |
Nesta dica eu mostro como podemos tirar proveito do método renameTo() da classe File do Java para renomear arquivos. Lembre-se de que a classe File está no pacote java.io. Além disso, não coloquei try...catch no exemplo. Faça isso caso você deseje usar este código em aplicações reais. Veja o código completo: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- package arquivodecodigos; import java.io.File; public class Estudos{ public static void main(String[] args){ // arquivo com o nome antigo File arquivo1 = new File("c:\\java\\Conectar.java"); // arquivo com o novo nome File arquivo2 = new File("c:\\java\\Conectar2.java"); boolean ok = arquivo1.renameTo(arquivo2); if(ok){ System.out.println("Arquivo renomeado com sucesso."); } else{ System.out.println("Nao foi possivel renomear o arquivo."); } } } Se o arquivo puder se renomeado com sucesso você verá a mensagem: Arquivo renomeado com sucesso. |
Desafios, Exercícios e Algoritmos Resolvidos de Java |
Veja mais Dicas e truques de Java |
Códigos Fonte |
![]() Diga adeus às planilhas do Excel e tenha 100% de controle sobre suas contas a pagar e a receber, gestão de receitas e despesas, cadastro de clientes e fornecedores com fotos e histórico de atendimentos. Código fonte completo e funcional, com instruções para instalação e configuração do banco de dados MySQL. Fácil de modificar e adicionar novas funcionalidades. Clique aqui e saiba mais |
![]() Tenha o seu próprio sistema de controle de estoque web. com cadastro de produtos, categorias, fornecedores, entradas e saídas de produtos, com relatórios por data, margem de lucro e muito mais. Código simples e fácil de modificar. Acompanha instruções para instalação e criação do banco de dados MySQL. Clique aqui e saiba mais |
Linguagens Mais Populares |
1º lugar: Java |