Erro de lógica no for

Boa tarde!

Sou iniciante em Java e estou precisando de ajuda.

Vou postar todo o código com o maior número possível de informações pois estou precisando de ajuda para entender melhor.

Criei um programa que permite digitar o nome do arquivo.txt que será lido.

Como exemplo, estou usando o arquivo teste.txt com o seguinte conteúdo:

03-02-2020/6/Pune/ATP250/610000 $/J. Vesely
03-02-2020/6/Cordoba/ATP250/610000 $/C. Garin
03-02-2020/6/Montpellier/ATP250/606350 $/G. Monfils
10-02-2020/7/Rotterdam/ATP500/2155295 $/G. Monfils
10-02-2020/6/New York/ATP250/804180 $/K. Edmund
10-02-2020/6/Buenos Aires/ATP250/696280 $/C. Ruud
09-02-2020/6/Buenos Aires/ATP250/696280 $/C. Ruud

O intuito do programa é imprimir o seguinte resultado, dada as informações do txt:

Jogador com o maior nº de pontos:
G. Monfils - 750


Jogador com maior valor em premiação: 
G. Monfils -  $ 2.761.645,00


Ranking Atual dos Jogadores:
Nome Jogador - Total de Pontos - Nº de Vitórias

G. Monfils  750 2
C. Ruud  500 2
C. Garin  250 1
J. Vesely  250 1
K. Edmund  250 1

Torneios com Datas Conflitantes:
10-02-2020 3
03-02-2020 3

03-02-2020 - J. Vesely
03-02-2020 - C. Garin
03-02-2020 - G. Monfils
10-02-2020 - G. Monfils
10-02-2020 - K. Edmund
10-02-2020 - C. Ruud

Mas estou com erro ao listar os torneios com datas conflitantes. Todo o resto funciona, menos essa parte. Nesse teste, está faltando 1 evento do dia 10. Testei com um arquivo maior e com mais datas e imprimiu eventos que não são das datas já listadas como eventos com datas conflitantes. Segue

Jogador com o maior nº de pontos:
G. Monfils - 750


Jogador com maior valor em premiação: 
G. Monfils -  $ 2.761.645,00


Ranking Atual dos Jogadores:
Nome Jogador - Total de Pontos - Nº de Vitórias

G. Monfils  750 2
C. Ruud  500 2
C. Garin  250 1
J. Vesely  250 1
K. Edmund  250 1

Torneios com Datas Conflitantes:
Data: 10-02-2020 Quantidade de vezes: 3
Data: 03-02-2020 Quantidade de vezes: 3

10-02-2020 Buenos Aires
10-02-2020 New York
03-02-2020 Montpellier
03-02-2020 Cordoba
03-02-2020 Pune

Segue meu código:

Principal.java

import javax.swing.*;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.text.DecimalFormat;
import java.util.*;

public class Principal {
    public static void main(String[] args) throws IOException {
        try {
            BufferedReader in = new BufferedReader(new FileReader(("../AD2 - LARISSA MACHADO - POO 2020.1/src/" + (JOptionPane.showInputDialog("Informe o nome do arquivo .txt existente nesse diretório a ser lido:" + "\n" + "Exemplo: arquivo.txt")))));
            try {
                ListaJogador lj = new ListaJogador();
                ListaData ld = new ListaData();
                String s, tipo;
                int valorTipo;
                String[] pont;
                String vs[];
                while ((s = in.readLine()) != null) {
                    vs = s.split("/");
                    tipo = vs[3].substring(0, 3);
                    if (tipo.contains("ATP")) {
                        valorTipo = Integer.parseInt(vs[3].substring(3, 6));
                    } else {
                        valorTipo = 2000;
                    }
                    pont = vs[4].split(" ");
                    lj.insere_lista_jogador(vs[0], vs[5], vs[2], Integer.parseInt(vs[1]), valorTipo,
                            Float.parseFloat(pont[0]));
                    ld.insere_lista_data(vs[0], vs[5], Integer.parseInt(vs[1]), valorTipo, Float.parseFloat(pont[0]));
                }
                in.close();
                DecimalFormat df = new DecimalFormat("#,###.00");
                System.out.println("Jogador com o maior nº de pontos:");
                Ordena_Pontos(lj);
                System.out.println(lj.prim.nome_jog + " - " + lj.prim.pontos_jog);
                System.out.println("");
                System.out.println("");
                System.out.println("Jogador com maior valor em premiação: ");
                Ordena_Valores_Premios(lj);
                System.out.println(lj.prim.nome_jog + " - " + " $ " + df.format(lj.prim.premio_jog));
                System.out.println("");
                System.out.println("");
                System.out.println("Ranking Atual dos Jogadores:");
                System.out.println("Nome Jogador - Total de Pontos - Nº de Vitórias");
                System.out.println("");
                Ordena_Ranking(lj);
                System.out.println(lj);
                System.out.println("Torneios com Datas Conflitantes:");
                Lista_Datas_Conflitantes(ld);
                System.out.print(ld);
                Lista_Jogos_Datas_Conflitantes(lj, ld);
            } catch (Exception e) {
                System.out.println("Excecao\n");
            }
        } catch (Exception e) {
            System.out.println("Arquivo não encontrado");
        }
    }

    public static void Ordena_Pontos(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.premio_jog
                        < q.premio_jog))
                    maior = q;
                else if ((maior.pontos_jog == q.pontos_jog) &&
                        (maior.premio_jog == q.premio_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.premio_jog;
                p.premio_jog = maior.premio_jog;
                maior.premio_jog = aux;
                int pr = p.pontos_jog;
                p.pontos_jog = maior.pontos_jog;
                maior.pontos_jog = pr;
                Torneio t = p.prim;
                p.prim = maior.prim;
                maior.prim = t;
            }
        }
    }

    public static void Ordena_Valores_Premios(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;
                int 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_Ranking(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) {
                int comparacao = maior.nome_jog.compareTo(q.nome_jog);
                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) && comparacao > 0)
                    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;
                Torneio t = p.prim;
                p.prim = maior.prim;
                maior.prim = t;
            }
        }
    }

    public static void Lista_Datas_Conflitantes(ListaData ld) {
        Data p, q, maior;
        for (p = ld.prim; p != null; p = p.prox) {
            maior = p;
            for (q = p.prox; q != null; q = q.prox) {
                int comparacao = maior.data.compareTo(q.data);
                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) && comparacao > 0)
                    maior = q;
            }
            if (maior != p) {
                String n = p.data;
                p.data = maior.data;
                maior.data = 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;
                Torneio t = p.prim;
                p.prim = maior.prim;
                maior.prim = t;
            }
        }
    }

    public static void Lista_Jogos_Datas_Conflitantes(ListaJogador lj, ListaData ld) {
        List<String> dataJogador = new ArrayList();
        List<String> dataLista = new ArrayList<>();
        Data p;
        Jogador jogos;
        for (p = ld.prim; p != null; p = p.prox) {
            dataJogador.add(p.data + " " + p.nome_jogador);
            for (jogos = lj.prim; jogos != null; jogos = jogos.prox) {
                dataLista.add(jogos.data + " " + jogos.nome_jog);
                if (jogos.data.equals(p.data)) {
                        System.out.println(p.data + " " + jogos.cidade);
                    }

                }
            }
        }
    }

Data.java

class Data {
    String data, nome_jogador;
    int num_vit_jog, pontos_jog, premio_jog;
    Torneio prim;
    Data prox;

    Data(String d, String n) {
        data = d;
        nome_jogador = n;
        num_vit_jog = pontos_jog = 0;
        premio_jog = 0;
        prim = null;
        prox = null;
    }

    void insere_torneio(int d, int ptos, float p) {
        num_vit_jog++;
        pontos_jog += ptos;
        premio_jog += p;
        Torneio q = new Torneio(d, ptos, p);
        q.prox = prim;
        prim = q;
    }

    public String toString() {
        String s = "";
            for (int i = 0; i < num_vit_jog; i++) {
                if (num_vit_jog > 1) {
                    return  ("Data:" + " " + data + " " + "Quantidade de vezes: " + num_vit_jog);
                }
                Torneio p = prim;
                while (p != null) {
                    p = p.prox;
                }
            }
        return s;
    }
}

Jogador.java

class Jogador {
    String nome_jog, data, cidade;
    int num_vit_jog, pontos_jog, premio_jog;
    Torneio prim;
    Jogador prox;
    Jogador(String d, String n, String c){
        data = d;
        nome_jog = n;
        cidade = c;
        num_vit_jog = pontos_jog = 0;
        premio_jog = 0;
        prim = null;
        prox = null;
    }
    void insere_torneio(int d, int ptos, float p){
        num_vit_jog++;
        pontos_jog += ptos;
        premio_jog += p;
        Torneio q = new Torneio(d, ptos, p);
        q.prox = prim;
        prim = q;
    }
    public String toString(){
        String resp =  nome_jog + "  "  + pontos_jog + " " + num_vit_jog;
        Torneio p = prim;
        while(p != null){
            p = p.prox;
        }
        return resp;
    }
}

ListaData.java

class ListaData {
    Data prim;
    ListaData(){
        prim = null;
    }
    Data pertence(String n){
        Data p = prim;
        while((p != null) && (!n.equals(p.data))) p = p.prox;
        return p;
    }
    void insere_lista_data(String data, String nome, int d, int ptos, float p){
        Data q = pertence(data);
        if(q == null){
            q = new Data(data, nome);
            q.prox = prim;
            prim = q;
        }
        q.insere_torneio (d, ptos, p);
    }
    public String toString(){
        Data p = prim;
        String resp = "";
        while(p != null){
            resp += p.toString();
            resp += "\n";
            p = p.prox;
        }
        return resp;
    }
}

ListaJogador.java

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_lista_jogador(String data, String nj, String cidade, int d, int ptos, float p){
        Jogador q = pertence(nj);
        if(q == null){
            q = new Jogador(data, nj, cidade);
            q.prox = prim;
            prim = q;
        }
        q.insere_torneio (d, ptos, p);
    }
    public String toString(){
        Jogador p = prim;
        String resp = "";
        while(p != null){
            resp += p.toString();
            resp += "\n";
            p = p.prox;
        }
        return resp;
    }
}

Torneio.java

class Torneio{
    int duracao, pontos;
    float premio;
    Torneio prox;
    Torneio(int d, int ptos, float p){
        pontos = ptos;
        premio = p;
        duracao = d;
        prox = null;
    }
    public String toString(){
        return duracao + "\n";
    }
}

Arquivo usado para testar:

teste.txt

03-02-2020/6/Pune/ATP250/610000 $/J. Vesely
03-02-2020/6/Cordoba/ATP250/610000 $/C. Garin
03-02-2020/6/Montpellier/ATP250/606350 $/G. Monfils
10-02-2020/7/Rotterdam/ATP500/2155295 $/G. Monfils
10-02-2020/6/New York/ATP250/804180 $/K. Edmund
10-02-2020/6/Buenos Aires/ATP250/696280 $/C. Ruud
09-02-2020/6/Buenos Aires/ATP250/696280 $/C. Ruud

Poderiam me ajudar por favor?

Muito obrigada!

O que é cada campo do arquivo, pode nos dizer?

Claro!

03-02-2020 - Data do inicio do campeonato
6 - duração em dias
Pune - cidade onde será realizado
ATP250 - pontuação. Quando Grand Slam, 2000 pontos, quando ATPXXX, valor do XXX. Ex: 250, 500
610000 $ - valor do premio recebido
J. Vesely - nome do jogador