Jump to content
PauloPereira17

[Resolvido] Não faz leitura do ficheiro CSV

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 ");
    }
}

Edited by Rui Carlos
GeSHi

Share this post


Link to post
Share on other sites
PauloPereira17

Não...

Apenas me diz que nao existe atletas inseridos...

Já dei voltas ao código e nada...

Share this post


Link to post
Share on other sites
HappyHippyHippo

e o path que estás a fornecer é o path correcto do ficheiro ? não estarás a dar um path errado e a criar um ficheiro vazio ?


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
PauloPereira17

O ficheiro esta dentro da pasta do projeto...

No programa eu insiro o nome e ele vai la abrir atraves do nome do ficheiro.

Share this post


Link to post
Share on other sites
HappyHippyHippo

não respondeste à questão : tens a certeza que estás a abrir o ficheiro pretendido e não a criar um ficheiro novo ?


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
saca-rolhas

Qual a biblioteca que estás a utilizar para ler o ficheiro?


The worst part of censorship is ****

Share this post


Link to post
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));

Share this post


Link to post
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

:cheesygrin::thumbsup:

Share this post


Link to post
Share on other sites
saca-rolhas

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 ****

Share this post


Link to post
Share on other sites
brunoais

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%.

Share this post


Link to post
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

:thumbsup:

Share this post


Link to post
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

Share this post


Link to post
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

×
×
  • 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.