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;
}
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 );
agradeço muito!!!