Ficheiro de texto JAVA

Tenho de ler um ficheiro java em que o utilizador dá o numero de linhas para ler a partir daí tenho que fornecer ao utilizador a media de letras por palavra em cada linha, ou seja tenho de dar um array de inteiros no final.Mas para isso tenho de saber por linha o numero de palavras e o numero de letras para fazer a conta.

/**
 * Retorna um array com as palavras da linha informada
 */
public String[] palavrasLinha(String linha) {
    return linha.trim().split("\\s");
}

/**
 * Retorna a média de letras por palavra das palavras informadas
 */
public int mediaLetrasPalavra(String[] palavras) {
    int soma = 0;
    for (String palavra : palavras) {
        soma += palavra.length();
    }
    return soma / palavras.length;
}
1 curtida

ok tou a perceber mas o resultado final tem de vir em array de int como posso modificar?

No caso é só vc criar um array dentro do método mediaLetrasPalavra, mudar o método para um método do tipo ArrayList, colocar para que após o for seja adicionado a soma dentro do array criado e no final retornar esse array.

ArrayList<Integer> array = new ArrayList<>();//cria array
array.add(soma); //adiciona o inteiro dentro do array
return array; //retorna no final do método o seu array

Mas agora cara, dificil saber o que você quer, pois vendo assim (com as informações que você nos apresentou) isso fica sem muito sentido…eu no caso não usaria ArrayList e sim HashMap, onde eu poderia identificar no meu HashMap qual linha especifica é, e sua média de palavras na linha. E criaria um novo método chamado getRelatório, esse método receberia um array de Strings que seriam as linhas e me retornaria no final um HashMap com as seguintes informações: Número da Linha/Média de Palavras. Sendo assim já aproveitando os métodos que nosso amigo @staroski fez.

obrigado!!

Array é uma coisa, ArrayList é outra.

Você cria um array com tamanho igual ao número de linhas que é pra ler.

int[] medias = new int[quantidadeLinhas];

A cada linha lida, você põe a média de letras por palavra em uma posição do array.

// Para cada linha lida:
String[] palavras = palavrasLinha( linhaLida );
medias[ linhaAtual ] = mediaLetrasPalavra( palavras );
2 curtidas

agradeço muito!!!