Estou escrevendo um programa para uma atribuição usando JTextArea para que o usuário manualmente texto de entrada, em seguida, I / o programa calcula as estatísticas simples. O problema que estou tendo é quando eu estou calculando a duração média de cada palavra digitada, não calcular corretamente (ou seja: palavras: 2, personagens: 6, comprimento médio: 3, mas meu programa atualmente diz 3.5).
Eu tentei (duplo) e (float) e nada na frente (contagem ++) / words.length para ver se era erros de arredondamento do programa e que não afeta a saída de todo.
Eu também pensei que poderia ser porque é contar os espaços '' assim que eu encontrei em um trecho de código que exclui o espaço na contagem dos caracteres da string digitada. @ https://www.quora.com/How-do-I-count-characters-in-a-string-in-Java-without-using-charcount
Ainda sou muito novo para Java, e ajuda seria apreciada! Sinto-me como se fosse um simples resolver, apenas algo que eu não estou vendo ainda. Eu tenho incluir a parte do código que se refere a este, e tudo não incluído está me criar o campo de texto, quadro, e botões, etc ...
public void actionPerformed(ActionEvent event){
String parsedString = inputText.getText();
String delims = "[1234567890.,?!()*\\s]+";
String words[]=parsedString.split(delims);
char [] ch = parsedString.toCharArray();
int count=0;
for (int i = 0; i < ch.length; i++) {
if (ch[i]!=' '){
count++;
}
}
wordCounter.setText("Words inputed: " + words.length);
wordCharacters.setText("Characters:" + count++ );
wordAverage.setText("Average Length: " + (float) (count++)/words.length );
}
Você precisa cortar o parsedString
antes de usá-lo no código. Ele remove esquerda e à direita espaços na string.
Aqui wordCharacters.setText("Characters:" + count++ );
e wordAverage.setText("Average Length: " + (float) (count++)/words.length );
aqui count++
é desnecessário porque incrementa a contagem calculada a partir de loop. É a questão em seu código. Verifique resposta abaixo.
public void actionPerformed(ActionEvent event) {
String parsedString = inputText.getText().trim();
String delims = "[1234567890.,?!()*\\s]+";
String[] words = parsedString.split(delims);
char[] ch = parsedString.toCharArray();
int count = 0;
for (int i = 0; i < ch.length; i++) {
if (ch[i] != ' ') {
count++;
}
}
wordCounter.setText("Words inputed: " + words.length);
wordCharacters.setText("Characters:" + count);
wordAverage.setText("Average Length: " + (float) (count) / words.length);
}