Duvida Leitura de arquivo

6 respostas
rodolpho_hc

Galera, tenho um arquivo teste.txt com o seguintes dados:

10,20,30,40,50,60,70,80,90
10,30,50,70,90,110,130,150
1
2
3
4
5
6
7

Preciso ler esse arquivo;

Criar um método que calcule a média da primeira linha;

Criar um método que some os valores da segunda linha;

Criar um método que some os valores da 3ª a 9ª Linha.

Olha o código que fiz até agora:

import java.io.BufferedReader;

import java.io.File;

import java.io.FileReader;

public class PReadFile {

public static void main (String args[]) 
{
	try{
		File f = new File("c:/Nova Pasta/teste.txt");
		BufferedReader bf = new BufferedReader(new FileReader(f));
           
        }   
	}catch(Exception e)
	{
		e.printStackTrace();
		
	}
	

}

}

6 Respostas

lina

Oi,

Por favor, antes de postar utilize as tags , ok ?

Para desenvolver esse problema de forma simples, você poderá fazer.:

1º Pegar linhas por linha o conteudo deste arquivo.
2º Para calcular a média da primeira linha: Você poderá dar um split na virgula, transformar seus valores em inteiros. Somar todo o array e dividir pelo .legth do resultado do split.
3º Criar um método que some os valores da segunda linha: Mesmo do item 2, com exceção da divisão.
4º Criar um método que some os valores da 3ª a 9ª Linha. Sem mistério essa.

O lance é receber linha por linhas este arquivo.

Obs: Essa é uma solução que encontrei de forma simples, claro que existem outras!

Tchauzin!

rodolpho_hc

Olha se desse jeito esta certo.

import java.io.BufferedReader;  
    import java.io.File;  
    import java.io.FileReader;  
      
      
    public class PReadFile {  
         
       public static void main (String args[])   
       {  
         try{  
            File f = new File("c:/Nova Pasta/teste.txt");  
            BufferedReader bf = new BufferedReader(new FileReader(f));  
              
       int [] [] matriz = new int[10][10];    
      String [] temp = new String[10];    
       BufferedReader bf = new BufferedReader(new FileReader("c:/Nova Pasta/teste.txt"));    
       for (int i=0; i<10; i++) {    
          String line = bf.readLine();    
           temp = line.split("\,");    
          for (int j=0; j<10; j++)    
               matriz[i][j] = Int.parseInt(temp[j]);    
       }    
      bf.close();             
                
               }     
     
            
        }catch(Exception e)  
         {  
            e.printStackTrace();  
              
         }  
          
     
      }  
     
   }

Estaria certo?

Filipe_A

Ola,

você pode dar um split na String em vez de fazer um array de string.

ex:

//...
try {

			FileReader leitor1 = new FileReader("???");

			BufferedReader leitor2 = new BufferedReader(leitor1);

			String linha = null;

			while ((linha = leitor2.readLine()) != null) {


                                // quebra a string pelo delimitador 
				String[] ioioioi = linha.split("/");
				
				
			}

			leitor2.close();

		} catch (Exception e) {
			e.printStackTrace();
		}

//...

Vc tambem pode fazer uma classe pra fazer o resto das coisas…

espero ter ajudado em algo.

rodolpho_hc

Mas e como fazer para calcular a media dos numeros da primeira Linha?
Somar os numeros da segunda?
e fazer a soma da 3º a 9ª linha?

Filipe_A

Bem…

Fiz algo rapidinho aqui que você talvez possa tomar como base.

obs: talvez não seja a melhor coisa a ser feita, mas é uma das formas de se fazer isto

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.util.ArrayList;

public class LetoraDeArquivos {

	private ArrayList<Linhas> listaDeLinhas = new ArrayList<Linhas>();

	public LetoraDeArquivos() {

	}

	public void lerArquivo(File file) {

		try {

			FileReader leitor1 = new FileReader(file);

			BufferedReader leitor2 = new BufferedReader(leitor1);

			String s = null;

			while ((s = leitor2.readLine()) != null) {

				String[] numeros = s.split("/");
				Linhas linha = new Linhas(numeros);
				listaDeLinhas.add(linha);

			}

			leitor2.close();

		} catch (Exception e) {
			e.printStackTrace();
		}

	}

	public ArrayList<Linhas> getListaLinhas() {
		return this.listaDeLinhas;
	}

}
public class Linhas {

	private int n1;
	private int n2;
	private int n3;
	private int n4;

	// ...

	public Linhas(String[] numeros) {

		n1 = Integer.parseInt(numeros[0]);
		n2 = Integer.parseInt(numeros[1]);
		n3 = Integer.parseInt(numeros[2]);
		n4 = (Integer.parseInt(numeros[3]));
		// ...
	}

	public int getN1() {
		return n1;
	}

	public int getN2() {
		return n2;
	}

	public int getN3() {
		return n3;
	}

	public int getN4() {
		return n4;
	}

	public int calcularMedia() {
		int media = n1 + n2 + n3 + n4 / 4;
		return media;
	}

	public int somarNumeros() {
		int soma = n1 + n2 + n3 + n4;
		return soma;
	}

}
import java.util.ArrayList;

public class Teste {

	public static void main(String[] args) {

		LetoraDeArquivos arquivos = new LetoraDeArquivos();

		arquivos.lerArquivo("??");

		ArrayList<Linhas> linhas = arquivos.getListaLinhas();

		Linhas linha = linhas.get(0);
		linha.calcularMedia();
		int soma1 = linha.somarNumeros();

		Linhas linha2 = linhas.get(1);
		linha2.calcularMedia();
		int soma2 = linha2.somarNumeros();

		System.out.println("Soma das linhas 1 e 2: " + soma1 + soma2);

	}

}

Ate+

lina

Oi,

Vou dar uma ajuda com o item 1 e 2.. depois você tentar fazer o próximo.

Segue:

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Arrays;
import java.util.ListIterator;

public class	PReadFile
{
	/*======================================================
	 * Variaveis para manipulação de arquivo.
	 *====================================================*/
	String is_buffer = "";
	byte[] ih_buffer;
	String[] is_linhas;	
	ListIterator<String> io_linhas;
	
	/*======================================================
	 * Variavel que pegará a linha atual do arquivo.
	 *=====================================================*/
	
	String is_linha_atual;
	
	int
	media_primeira_linha = 0,
	soma_primeira_linha = 0;
	
	int
	soma_segunda_linha = 0;
	
	public	PReadFile()
	{
		AbrirArquivo();
		
		is_buffer		=	new String(ih_buffer);
		
		LerArquivo();
		
		/*=======================================================
		 * Calculo da média para a primeira linha.
		 *======================================================*/
		
		// Recebe a primeira linha do arquivo.
		is_linha_atual = LinhaAtual();
		
		String[] ls_primeira_linha = is_linha_atual.split("\,");
		
		for (int i = 0; i<ls_primeira_linha.length; i++) {
			soma_primeira_linha += Integer.parseInt(ls_primeira_linha[i]);
		}
		
		media_primeira_linha = soma_primeira_linha/ls_primeira_linha.length;		
		System.out.println("A media da primeira linha é: "+media_primeira_linha);
		
		/*=======================================================
		 * Calculo da soma da segunda linha.
		 *======================================================*/
		
		// Recebe a segunda linha do arquivo.
		is_linha_atual = LinhaAtual();
		
		String[] ls_segunda_linha = is_linha_atual.split("\,");
		
		for (int i = 0; i<ls_segunda_linha.length; i++) {
			soma_segunda_linha += Integer.parseInt(ls_segunda_linha[i]);
		}
		
		System.out.println("Soma da segunda linha é: "+soma_segunda_linha);
	}
	
	public void	AbrirArquivo()
	{
		try
		{
                	// Objeto para manuseio do arquivo ...
			FileInputStream lo_is_file = new FileInputStream("teste.txt");
			
        		// aloca o espaço para leitura ...
			ih_buffer		=	new byte[lo_is_file.available()-0];
			
	        	// "Pula" dentro do arquivo até a posição desejada
	        	lo_is_file.skip(0);
	        	
	        	// Read file ...
	        	lo_is_file.read(ih_buffer, 0, ih_buffer.length);
	        	
	        	// Fecha o arquivo.
	        	lo_is_file.close();
		}
		catch (FileNotFoundException e)
		{
			e.printStackTrace();
		}
		catch (IOException e)
		{
			e.printStackTrace();
		}
	}
	
	public void	LerArquivo()
	{
		is_linhas	=	is_buffer.split("\r\n");
		io_linhas	=	Arrays.asList(is_linhas).listIterator();
	}
	
	public String	LinhaAtual()
	{
		return	(
				io_linhas.hasNext()
				?	io_linhas.next()
				:	""
			);
	}
	
	public static void main(String args[])
	{
        	new PReadFile();
	}
}

Qualquer dúvida, pergunte!

Tchauzin!

Criado 16 de setembro de 2009
Ultima resposta 16 de set. de 2009
Respostas 6
Participantes 3