Galera, vejam q problema

Galera, eis meu codigo abaixo q busca em um arquivo notas.txt as notas de alunos e grava seu nome, media e situacao em um arquivo saidaNotas.txt.
A entrada sempre devera ser feita da seguinte forma:

Juliano Drusian;7;8.5;9
Carlos Santana;5;3

sendo notas uma quantidade indefinida…

olhem meu código:


import java.util.StringTokenizer;
import java.io.*;
import java.lang.*;

public class CalculaMedia {
 
  public CalculaMedia()
	{
	   
	}
  
  public void notas()
  {
  	
	int count = 0;
	int linhas = 0;
	try {

	  	BufferedReader in = new BufferedReader(new FileReader("notas.txt"));
		BufferedWriter out = new BufferedWriter(new FileWriter("SaidaNotas.txt"));
	  	
		String str="";
		float j=0;;
		float countQTDnotas=0;
		float totNotas=0;
		float media = 0;
		String getNome = "";
		String proxToken = "";
		String status = "";
		int ultimaPos=0;
			
		  while ( ( str = in.readLine() ) != null )
		  {

			linhas++;		    

			StringTokenizer token = new StringTokenizer(str);
	
			   while (token.hasMoreTokens()) 
			   {
				    proxToken = token.nextToken(";");
					
					
					if (count == 0)
					 {
					 	getNome = proxToken;
					
					 }
					
					if (count > 0)
					 {
						j = Float.parseFloat(proxToken);
						countQTDnotas++;
						totNotas = (totNotas + j);
						media = (totNotas / countQTDnotas);
					 }
				   count++; 
			   }
	 
					if (media < 5)
						 status = "Reprovado";
						else if ((media >=5) && (media < 7))
								status = "Exame";
							   else if (media >= 7)
									  status = "Aprovado";
				
				out.write("Nome: " + getNome + " ## Media: " + media + " ## Situação: " + status);
				out.close();	       
				
		}			 
					 
			in.close();	
		  
		   

		} catch (IOException e) { }

	
		
		System.out.println("\n\nLinhas" + linhas);
		
  }
  
  
  public static void main (String[] args) 
  throws Exception 
  {

	CalculaMedia f = new CalculaMedia();
	f.notas();
    
  }
	
}

só q, na saida, ele mostra apenas a 1a linha, ou seja, ele analisa apenas o 1o aluno… na minha condicao, obviamente, q se COUNT==0, ele pegara o nome da pessoa, mas, qdo for p/ a linha de baixo, COUNT nao sera + zero… Só q eu consigo zerar o count após ele passar pela 1a linha, mas msmo assim nao da certo…

tento fazer com k ele analise somente notas, mas com essa programacai q passei p/ vcs, ele só analisa e GRAVA no out.write, apenas a 1a linha…

o q devo fazer?? gostaria q vcs testassem o programa p/ ver o resultado e confirmar q com mais de um nome(+ de uma linha no arquivo de entrada), ele ja nao analisa e nao grava…

o q devo fazer???

aguardo e valewsssss :?:

Olha aí o código corrigido e revisado ! :smiley:

[code]import java.util.StringTokenizer;
import java.io.;
import java.lang.
;

public class CalculaMedia {

public CalculaMedia(){}

public void notas(){
int linhas = 0;
try {
BufferedReader in = new BufferedReader(new FileReader("notas.txt"));
BufferedWriter out = new BufferedWriter(new FileWriter("SaidaNotas.txt"));

  String str="";
  float j=0;
  float countQTDnotas=0;
  float totNotas=0;
  float media = 0;
  String getNome = "";
  String proxToken = "";
  String status = "";
  int ultimaPos=0;
  while ( ( str = in.readLine() ) != null )
  {
    linhas++;
    int count = 0;
    StringTokenizer token = new StringTokenizer(str);
    while (token.hasMoreTokens()){
      proxToken = token.nextToken(";");
      if (count == 0){
         getNome = proxToken;
      } else if (count > 0){
        j = Float.parseFloat(proxToken);
        countQTDnotas++;
        totNotas = (totNotas + j);
        media = (totNotas / countQTDnotas);
      }
      count++;
    }

    if (media < 5){
      status = "Reprovado";
    } else if ((media >=5) && (media < 7)){
      status = "Exame";
    } else if (media >= 7){
      status = "Aprovado";
    }
    
    out.write("Nome: " + getNome + " ## Media: " +
      media + " ## Situação: " + status);
    out.newLine();
  }
  in.close();
  out.close();
} catch (IOException e) {e.printStackTrace();} 
System.out.println("\n\nLinhas" + linhas);

}

public static void main (String[] args)
throws Exception
{
CalculaMedia f = new CalculaMedia();
f.notas();
}
}[/code]

Oi

Heber, ainda não testei teu código cara, estou meio sem tempo aqui… Mas abaixo segue um trecho de cogio que faz a leitura de um arqwuivo, independente do seu tamanho e coloca tudo em BufferedReader…

  BufferedReader buff;
 try {
                                                        buff = new BufferedReader(new FileInputStreamReader(arquivo.getInputStream());
                                                        aux = buff.readLine();
                                                        while (!(aux = buff.readLine()).equals("!!")) {
                                                                resultados.add(aux);
                                                        }
                                                }
                                                catch (IOException e1) {
                                                        e1.printStackTrace();
                                                        JOptionPane.showMessageDialog(null,"# 303\nIOException\n\n"+e1.getMessage());
                                                }

Nesse caso eu faço o teste até ele achar uma String “!!”, tu pode mudar pra ele ir até o final do arquivo.

T+

e ae heber…

kra, simplestemente muito OBRIGADO kra… valews msmo… show de bola essa parada q vc em arrumow… valew kra…

e valew a tdos… o programa ta show…
valews msmo…

precisar, estamos ai… :wink: