Ir para o conteúdo
PauloPereira17

[Resolvido] Não faz leitura do ficheiro CSV

Mensagens Recomendadas

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

Editado por Rui Carlos
GeSHi

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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));

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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:

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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 ****

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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%.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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:

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.