1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Erro ao ordenar arquivo

Sou iniciante em Java e tenho o seguinte código:

import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException;

public class Principal{
    public static void main(String[] args) throws IOException {
        BufferedReader in = new BufferedReader(new FileReader(args[0]));
        try {
            ListaPais lp = new ListaPais();
            ListaJogador lj = new ListaJogador();
            String s, vs[];
            while((s = in.readLine()) != null) {
                vs = s.split("/");
                lp.insere(vs[2], vs[1], Integer.parseInt(vs[3]),
                        Float.parseFloat(vs[4]));
                lj.insere(vs[5], vs[1], Integer.parseInt(vs[3]),
                        Float.parseFloat(vs[4]));
            }
            in.close();
            System.out.println(lp);
            System.out.println("Depois da ordenacao pelo Item C:");
            Ordena_Item_C(lp);
            System.out.println(lp);
            System.out.println(lj);
            System.out.println("Depois da ordenacao pelo Item A:");
            Ordena_Item_A(lj);
            System.out.println(lj);
            System.out.println("Depois da ordenacao pelo Item B:");
            Ordena_Item_B(lj);
            System.out.println(lj);
            System.out.println("Depois da ordenacao pelo Item D:");
            Ordena_Item_D(lj);
            System.out.println(lj);
        }
        catch (Exception e){
            System.out.println("Excecao\n");
        }
    }
    public static void Ordena_Item_C(ListaPais lp){
        Pais p, q, maior;
        for(p = lp.prim; p != null; p = p.prox){
            maior = p;
            for(q = p.prox; q != null; q = q.prox){
                if(maior.num_total < q.num_total)
                    maior = q;
                else if((maior.num_total == q.num_total) && (maior.total_ptos <
                        q.total_ptos))
                    maior = q;
                else if ((maior.num_total == q.num_total) && (maior.total_ptos
                        == q.total_ptos) && (maior.total_premio < q.total_premio))
                    maior = q;
            }
            if(maior != p){
                String n = p.nome_pais;
                p.nome_pais = maior.nome_pais;
                maior.nome_pais = n;
                int aux = p.num_total;
                p.num_total = maior.num_total;
                maior.num_total = aux;
                aux = p.total_ptos;
                p.total_ptos = maior.total_ptos;
                maior.total_ptos = aux;
                float pr = p.total_premio;
                p.total_premio = maior.total_premio;
                maior.total_premio = pr;
                Torneio t = p.prim;
                p.prim = maior.prim;
                maior.prim = t;
            }
        }
    }
    public static void Ordena_Item_A(ListaJogador lj){
        Jogador p, q, maior;
        for(p = lj.prim; p != null; p = p.prox){
            maior = p;
            for(q = p.prox; q != null; q = q.prox){
                if(maior.num_vit_jog < q.num_vit_jog)
                    maior = q;
                else if((maior.num_vit_jog == q.num_vit_jog) &&
                        (maior.pontos_jog < q.pontos_jog))
                    maior = q;
                else if ((maior.num_vit_jog == q.num_vit_jog) &&
                        (maior.pontos_jog == q.pontos_jog) && (maior.premio_jog < q.premio_jog))
                    maior = q;
            }
            if(maior != p){
                String n = p.nome_jog;
                p.nome_jog = maior.nome_jog;
                maior.nome_jog = n;
                int aux = p.num_vit_jog;
                p.num_vit_jog = maior.num_vit_jog;
                maior.num_vit_jog = aux;
                aux = p.pontos_jog;
                p.pontos_jog = maior.pontos_jog;
                maior.pontos_jog = aux;
                float pr = p.premio_jog;
                p.premio_jog = maior.premio_jog;
                maior.premio_jog = pr;
                Torneio t = p.prim;
                p.prim = maior.prim;
                maior.prim = t;
            }
        }
    }
    public static void Ordena_Item_B(ListaJogador lj){
        Jogador p, q, maior;
        for(p = lj.prim; p != null; p = p.prox){
            maior = p;
            for(q = p.prox; q != null; q = q.prox){
                if(maior.pontos_jog < q.pontos_jog)
                    maior = q;
                else if((maior.pontos_jog == q.pontos_jog) &&
                        (maior.num_vit_jog < q.num_vit_jog))
                    maior = q;
                else if ((maior.pontos_jog == q.pontos_jog) &&
                        (maior.num_vit_jog == q.num_vit_jog) && (maior.premio_jog <
                        q.premio_jog))
                    maior = q;
            }
            if(maior != p){
                String n = p.nome_jog;
                p.nome_jog = maior.nome_jog;
                maior.nome_jog = n;
                int aux = p.num_vit_jog;
                p.num_vit_jog = maior.num_vit_jog;
                maior.num_vit_jog = aux;
                aux = p.pontos_jog;
                p.pontos_jog = maior.pontos_jog;
                maior.pontos_jog = aux;
                float pr = p.premio_jog;
                p.premio_jog = maior.premio_jog;
                maior.premio_jog = pr;
                Torneio t = p.prim;
                p.prim = maior.prim;
                maior.prim = t;
            }
        }
    }
    public static void Ordena_Item_D(ListaJogador lj){
        Jogador p, q, maior;
        for(p = lj.prim; p != null; p = p.prox){
            maior = p;
            for(q = p.prox; q != null; q = q.prox){
                if(maior.premio_jog < q.premio_jog)
                    maior = q;
                else if((maior.premio_jog == q.premio_jog) && (maior.pontos_jog
                        < q.pontos_jog))
                    maior = q;
                else if ((maior.premio_jog == q.premio_jog) &&
                        (maior.pontos_jog == q.pontos_jog) && (maior.num_vit_jog <
                        q.num_vit_jog))
                    maior = q;
            }
            if(maior != p){
                String n = p.nome_jog;
                p.nome_jog = maior.nome_jog;
                maior.nome_jog = n;
                int aux = p.num_vit_jog;
                p.num_vit_jog = maior.num_vit_jog;
                maior.num_vit_jog = aux;
                aux = p.pontos_jog;
                p.pontos_jog = maior.pontos_jog;
                maior.pontos_jog = aux;
                float pr = p.premio_jog;
                p.premio_jog = maior.premio_jog;
                maior.premio_jog = pr;
                Torneio t = p.prim;
                p.prim = maior.prim;
                maior.prim = t;
            }
        }
    } }
class ListaPais{
        Pais prim;
        ListaPais(){
        prim = null;
        }
        Pais pertence(String n){
        Pais p = prim;
        while((p != null) && (!n.equals(p.nome_pais))) p = p.prox;
        return p;
        }
        void insere(String np, String n, int ptos, float p){
        Pais q = pertence(np);
        if(q == null){
        q = new Pais(np);
        q.prox = prim;
        prim = q;
        }
        q.insere_torneio (n, ptos, p);
        }
public String toString(){
        Pais p = prim;
        String resp = "";
        while(p != null){
        resp += p.toString();
        resp += "\n";
        p = p.prox;
        }
        return resp;
        }
        }
class Pais{
    String nome_pais;
    int num_total, total_ptos;
    float total_premio;
    Torneio prim;
    Pais prox;
    Pais(String np){
        nome_pais = np;
        num_total = total_ptos = 0;
        total_premio = 0.0F;
        prim = null;
        prox = null;
    }
    void insere_torneio(String n, int ptos, float p){
        num_total++;
        total_ptos += ptos;
        total_premio += p;
        Torneio q = new Torneio(n, ptos, p);
        q.prox = prim;
        prim = q;
    }
    public String toString(){
        String resp = nome_pais + " " + num_total + " " + total_ptos + " "
                + total_premio + ":\n";
        Torneio p = prim;
        while(p != null){
            resp += p.toString();
            p = p.prox;
        }
        return resp;
    }
}
class ListaJogador{
    Jogador prim;
    ListaJogador(){
        prim = null;
    }
    Jogador pertence(String n){
        Jogador p = prim;
        while((p != null) && (!n.equals(p.nome_jog))) p = p.prox;
        return p;
    }
    void insere(String nj, String n, int ptos, float p){
        Jogador q = pertence(nj);
        if(q == null){
            q = new Jogador(nj);
            q.prox = prim;
            prim = q;
        }
        q.insere_torneio (n, ptos, p);
    }
    public String toString(){
        Jogador p = prim;
        String resp = "";
        while(p != null){
            resp += p.toString();
            resp += "\n";
            p = p.prox;
        }
        return resp;
    }
}
class Jogador{
    String nome_jog;
    int num_vit_jog, pontos_jog;
    float premio_jog;
    Torneio prim;
    Jogador prox;
    Jogador(String n){
        nome_jog = n;
        num_vit_jog = pontos_jog = 0;
        premio_jog = 0.0F;
        prim = null;
        prox = null;
    }
    void insere_torneio(String n, int ptos, float p){
        num_vit_jog++;
        pontos_jog += ptos;
        premio_jog += p;
        Torneio q = new Torneio(n, ptos, p);
        q.prox = prim;
        prim = q;
    }
    public String toString(){
        String resp = nome_jog + " " + num_vit_jog + " " + pontos_jog + " "
                + premio_jog + ":\n";
        Torneio p = prim;
        while(p != null){
            resp += p.toString();
            p = p.prox;
        }
        return resp;
    }
}
class Torneio{
    String nome;
    int pontos;
    float premio;
    Torneio prox;
    Torneio(String n, int ptos, float p){
        pontos = ptos;
        premio = p;
        nome = n;
        prox = null;
    }
    public String toString(){
        return nome + "\n";
    }
}

Preciso fazer essas ordenações e exibir o resultado correto para um arquivo com conteúdo assim:

02.01.12/Brisbane/Australia/250/434250.0/Andy Murray
02.01.12/Chennai/India/250/398250.0/Milos Raonic
02.01.12/Doha/Qatar/250/1024000.0/Jo Wilfried Tsonga
09.01.12/Heineken Open/New Zealand/250/398250.0/David Ferrer
09.01.12/Apia Int. Sydney/Australia/250/434250.0/Jarkko Nieminen
16.01.12/Australian Open/Australia/2000/11806550.0/Novak Djokovic
30.01.12/Open Sud de France/France/250/398250.0/Tomas Berdych
13.02.12/ABN AMRO World/The Netherlands/500/1207500.0/Roger Federer
13.02.12/SAP Open/U.S.A./250/531000.0/Milos Raonic
13.02.12/Brasil Open 2012/Brazil/250/475300.0/Nicolas Almagro
20.02.12/Copa Claro/Argentina/250/484100.0/David Ferrer
20.02.12/Open 13/France/250/512750.0/Juan Martin Del Potro
20.02.12/Regions Morgan Keegan Champ/U.S.A./500/1155000.0/Jurgen Melzer
27.02.12/Abierto Mexicano Telcel/Mexico/500/1155000.0/David Ferrer
27.02.12/Delray Beach Int Tennis Cham/U.S.A./250/442500.0/Kevin Anderson
27.02.12/Dubai Duty Free Tennis Champ/U.A.E./500/1700475.0/Roger Federer
08.03.12/BNP Paribas Open/U.S.A./1000/4694969.0/Roger Federer
21.03.12/Sony Ericsson Open/U.S.A./1000/3973050.0/Novak Djokovic

Mas estou tomando o seguinte erro:


Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
    at Principal.main(Principal.java:7)

Poderiam me ajudar?

  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

0 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags java ou faça a sua própria pergunta.