Duvida Leitura de arquivo

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();
		
	}
	

}

}

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!

Olha se desse jeito esta certo.

[code] 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();  
          
     }  
      
 
  }  

} [/code]

Estaria certo?

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.

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?

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+

Oi,

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

Segue:

[code]
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 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();
}

}[/code]

Qualquer dúvida, pergunte!

Tchauzin!