Jump to content

[Resolvido] Não faz leitura do ficheiro CSV


PauloPereira17
 Share

Recommended Posts

PauloPereira17

Durante o desenvolvimento de uma aplicação não existe nao tive nenhum erro...

Durante a execução nao tive nenhum erro...

Mas os dados do ficheiro CSV não são lidos para o array

HELP

public static void main(String[] args) throws Exception {
    String[] atletas = new String[MAX_ATLETAS];
    int[][] provas = new int[MAX_ATLETAS][MAX_PROVAS];
    int r, op, num, nElems = 0;
    String nom;
    do {
        op = menu();
        switch (op) {
            case 1:
                out.format("%s%n", "Qual o nome do ficheiro?");
                nom = in.nextLine();
                r = lerInfoFicheiro(nom, atletas, nElems);
                if (r == -1) {
                    out.format("%n%s%n", "Não foi possível introduzir toda a informação");
                    nElems = MAX_ATLETAS;
                    continuar();
                } else {
                    nElems = r;
                }
                break;
            case 2:
                out.format("%s%n", "Qual o nº do atleta?");
                num = in.nextInt();
                in.nextLine();
                mostrarInfoAtleta(num, atletas, nElems);
                continuar();
                break;
            case 3:
                inserirTempos();
                break;
            case 4:
                listar();
                break;
            case 0:
                out.format("%n%s%n", "FIM");
                break;
            default:
                out.format("%n%s%n", "OPÇÃO INCORRECTA. REPITA");
                continuar();
                break;
        }
    } while (op != 0);
}
private static int lerInfoFicheiro(String nomeFich, String[] atl, int nEl) throws Exception {
    Scanner fIn = new Scanner(new File(nomeFich));
    while (fIn.hasNext() && nEl < MAX_ATLETAS) {
        String linha = fIn.nextLine();
        System.out.println(linha);
        nEl = guardarInfoAtleta(linha, atl, nEl);
    }
    if (fIn.hasNext()) {
        fIn.close();
        return -1;
    } else {
        fIn.close();
        return nEl;
    }
}
private static int guardarInfoAtleta(String aux, String[] vec, int n) {
    String[] temp = aux.split(";");
    vec[n] = temp[1];
    vec[n] += temp[2];
    if (Integer.parseInt(temp[3]) <= 20) {
        vec[n] += "A";
    } else {
        if (Integer.parseInt(temp[3]) <= 30) {
            vec[n] += "B";
        } else {
            vec[n] += "C";
        }
    }
    temp[0] = temp[0].trim();
    if (temp[0].length() > 20) {
        vec[n] += temp[0].substring(0, 20);
    } else {
        vec[n] += temp[0];
    }
    return ++n;
}
private static void mostrarInfoAtleta(int num, String[] atl, int nEl) {
    int pos = procurarAtletaNum(num, atl, nEl);
    if (pos != -1) {
        out.format("%n");
        out.format("Nome :%s%n", atl[pos].substring(5));
        out.format("Género: %c%n", atl[pos].charAt(0));
        out.format("Categoria :%c%n", atl[pos].charAt(4));
        out.format("Nº de Camisola:%3s%n", atl[pos].substring(1, 4));
    } else {
        out.format("%n%s%d%s%n", "O atleta nº", num, " não existe ");
    }
}
Link to comment
Share on other sites

PauloPereira17

Fiz o import

//import java.io.File;
e depois utilizei um Scanner:
out.format("%s%n", "Qual o nome do ficheiro?");
nomFich = in.nextLine();
Scanner fIn = new Scanner(new File(nomeFich));
Link to comment
Share on other sites

PauloPereira17

Tive a dar mais uma olhadela no meu código e reparei na barra lateral (NetBeans) onde tem a pasta do projeto.

Encontrei algo muito curioso, que provavelmente é a razão do ficheiro nao estar a ser carregado.

O ficheiro (atletas.csv) quando passo o mouse por cima dele aparece no ecra: (Unrecognized file).

Alguma solução?

Obrigado a todos que me estão a ajudar

😁👍

Link to comment
Share on other sites

Tens o ficheiro que pretendes ler dentro do projecto !!!???

Se sim remove-o desse sitio e coloca num sitio mais básico para testar tipo C:

The worst part of censorship is ****

Link to comment
Share on other sites

seria melhor ideia se fechasses o ficheiro antes de tentares abrir para ler.

Se queres manter assim, sugiro que uses o flush() para obrigar a escrever o conteúdo para o ficheiro.

"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Link to comment
Share on other sites

PauloPereira17

Já resolvi o problema

O problema era que o ficheiro nao era reconhecido devido a caracteres acentuados.

Depois de tentar fazer tudo e mais alguma coisa, abri o ficheiro csv no NetBeans e ocorreu um erro, mas depois de clicar em ok o ficheiro abriu mas com os caracteres acentuados substituidos por caracteres desconhecidos ([]) e depois substitui os caracteres novamente e depois correu tudo normalmente...

Muito Obrigado pela vossa ajuda

👍

Link to comment
Share on other sites

HappyHippyHippo

caracteres acentuados não é razão para um código em Java não correr correctamente pois é uma linguagem que trabalha em UTF-8.

o problema deveria estar noutro lugar, algo como o ficheiro estar gravado em ISO-8859-X

IRC : sim, é algo que ainda existe >> #p@p
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.