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?