Leitura de arquivos.csv

4 respostas
H

Boa Noite amigos...

Estou com uma duvida, sendo que a entrega do trabalho ta em cima do prazo ... Se puderem me ajudar...

Tenho 19 arquivos referentes as corridas de formula1 do ano passado. Os arquivos estao em formato .csv, consigo ler eles numa boa, mas preciso imprimir a classificacao final, somando os pontos dos pilotos. Ai que esta minha dificuldade... Não consigo fazer essa soma... Os campos do arquivo sao os mesmos do meu construtor da classe Piloto ...

.Segue abaixo o que tenho ate agora ...

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class Main {

    public static void main (String [] args){

        List v1 = leFile ();
        int pA[] = new int[190];
        int pontosEx = 0;
        for (int i = 0; i<v1.size(); i++){
            Piloto p = (Piloto) v1.get(i);
            int nNum = (Integer.parseInt(p.numero));
            pA[i] = (Integer.parseInt(p.numero));            
            //pontosEx = p.getPontos();
                //System.out.println(p.getPiloto());
                //System.out.println(p.pontos + pontosEx);
                //if(pA[i] == nNum)
                //pontosEx = p.getPontos();
                    //p.pontos = p.pontos + pA[i];
                   // System.out.println(nNum);

            System.out.println();
            p.print(); //Chama metodo da classe Piloto "print" ;
            System.out.println();
        }
    }
                        
	public static List leFile () {

            File arquivos[]; //CRIA ARRAY, OS ARQUIVOS .CSV ESTA ARMAZENADOS TODOS EM UM DIRETORIO
            File diretorio = new File("C:\\Henrique_Arquivos"); //DIRETORIO ONDE ESTAO ARMAZENADOS OS ARQUIVOS .CSV
            arquivos = diretorio.listFiles();            

            Temporada2010 temp = new Temporada2010(30); // Cria uma instancia da classe Temporada2010
            List v2 = new ArrayList<Piloto>();             

            try {
                for ( int i = 0; i < arquivos.length ; i++){ //Le todos os arquivos .csv
                    FileReader fr = new FileReader (arquivos[i]);
                    BufferedReader in = new BufferedReader (fr);
                    in.readLine();
                    String line;

                    while ((line=in.readLine())!= null){ // Le arquivo .csv enquanto linha for diferente de null
                        Provas provas = new Provas(24);
                        Piloto p = AchaTokens (line); // Chama metodo acha tokens
                        boolean t = v2.contains(p.getPiloto());
                        if (p.getPontos() != 0 & t == false){
                            v2.add (p);// adiciona piloto no array list
                            Collections.sort (v2, new PorPontos());
                        }
                    }
                            
                            in.close (); //fecha arquivo

                }
            }
                      
            catch (IOException e) {
                System.out.println ("Erro na leitura do arquivo "+diretorio);
            }

            return v2;
        }

	private static Piloto AchaTokens (String line) {
            Piloto p;
            String tk[] = line.split(";");
            p = new Piloto (tk[0], tk[1], tk[2], tk[3], tk[4],tk[5],Integer.parseInt(tk[6]));
            return p;
	}
}
public class Piloto implements Comparable{

    protected String numero, piloto, time, voltas, tempo, grid;
    protected int pontos;

    public Piloto(String numero, String piloto, String time, String voltas, String tempo, String grid, int pontos) {
        this.numero = numero;
        this.piloto = piloto;
        this.time = time;
        this.voltas = voltas;
        this.tempo = tempo;
        this.grid = grid;
        this.pontos = pontos;
    }

    public Piloto(){

    }

    public void print(){
        System.out.println("Numero do piloto: " +numero);
        System.out.println("Nome do piloto: " +piloto);
        System.out.println("Equipe: " +time);
        System.out.println("Voltas: " +voltas);
        System.out.println("Tempo: " +tempo);
        System.out.println("Grid: " +grid);
        System.out.println("Pontuação: " +pontos);
    }
     
    public int compareTo (Object obj){
        if (this.pontos > pontos)
            return 1;
        else if(this.pontos < pontos)
            return -1;
        else
            return 0;
    }

    /**
     * @return the numero
     */
    public String getNumero() {
        return numero;
    }

    /**
     * @param numero the numero to set
     */
    public void setNumero(String numero) {
        this.numero = numero;
    }

    /**
     * @return the piloto
     */
    public String getPiloto() {
        return piloto;
    }

    /**
     * @param piloto the piloto to set
     */
    public void setPiloto(String piloto) {
        this.piloto = piloto;
    }

    /**
     * @return the time
     */
    public String getTime() {
        return time;
    }

    /**
     * @param time the time to set
     */
    public void setTime(String time) {
        this.time = time;
    }

    /**
     * @return the voltas
     */
    public String getVoltas() {
        return voltas;
    }

    /**
     * @param voltas the voltas to set
     */
    public void setVoltas(String voltas) {
        this.voltas = voltas;
    }

    /**
     * @return the tempo
     */
    public String getTempo() {
        return tempo;
    }

    /**
     * @param tempo the tempo to set
     */
    public void setTempo(String tempo) {
        this.tempo = tempo;
    }

    /**
     * @return the grid
     */
    public String getGrid() {
        return grid;
    }

    /**
     * @param grid the grid to set
     */
    public void setGrid(String grid) {
        this.grid = grid;
    }

    /**
     * @return the pontos
     */
    public int getPontos() {
        return pontos;
    }

    /**
     * @param pontos the pontos to set
     */
    public void setPontos(int pontos) {
        this.pontos = pontos;
    }
}
import java.util.Arrays;

public class Provas {

    public Piloto piloto [] ;

    public Provas(int size){
        piloto = new Piloto[size];
    }

    public void inserePiloto(Piloto p){
        for (int i=0; i<1;i++)
        piloto[i] = p;
    }

    public void classifica(){
        Arrays.sort(piloto);
    }
}
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Arrays;

public class Temporada2010 {

    Piloto osQuePontuaram[];
    private int last;

    public Temporada2010(int size){
        osQuePontuaram = new Piloto[size];
        last = -1;
    }

    public void inserePilotosQuePontuaram(Piloto p){
        for (int i=0; i<osQuePontuaram.length;i++){
            if(p.getPontos() != 0){
                last++;
                osQuePontuaram[last] = p;
            }
        for (int j=0; j<osQuePontuaram.length;j++){
            if(osQuePontuaram[i].equals(p))
                p.pontos +=p.pontos;
        }
    }
    }

    public void ordenaPorNome(){
        Arrays.sort(osQuePontuaram,new PorNome());
    }

    public void ordenaPorPontos(){
        Arrays.sort(osQuePontuaram,new PorPontos());
    }

    public void gravar(File arquivo)throws IOException{
        PrintWriter gravador = new PrintWriter(new FileWriter(arquivo));

        for (int i=0;i<osQuePontuaram.length;i++)
            gravador.print(osQuePontuaram[i]);

        gravador.close();
    }
}
import java.util.Comparator;

public class PorNome implements Comparator {

    public int compare (Object obj1, Object obj2){
        Piloto p1 = (Piloto) obj1;
        Piloto p2 = (Piloto) obj2;

        return p1.getPiloto().compareTo(p2.getPiloto());
    }
}
import java.util.Comparator;

public class PorPontos implements Comparator {

    public int compare(Object obj1, Object obj2){
        Piloto p1 = (Piloto) obj1;
        Piloto p2 = (Piloto) obj2;

        if (p1.getPontos() == p2.getPontos())
            return 0;
        else if (p1.getPontos() > p2.getPontos())
            return -1;
        else
            return 1;
    }
}

4 Respostas

H

Preciso descobrir uma maneira de somar o campo “pontos” de cada piloto a cada leitura de arquivo… no total de 19… alguma dica pessoal ?

H

Consegui ordenar o array por pontos… só falta fazer a soma dos pontos de cada piloto a cada corrida …

Ninguem pra me ajudar ??

H

:cry: alguem da uma mao aee…

H

ninguem me deu uma dica se quer…

Entreguei o trabalho, consegui resolver sozinho…

Obrigado por nada…

Criado 18 de abril de 2011
Ultima resposta 23 de abr. de 2011
Respostas 4
Participantes 1