В настоящее время я работаю над методом, который должен возвращать количество символов новой строки, слов и символов строки в массиве int []. Я запутался в том, как посчитать, сколько раз метод Scanner.next () запускается. Я пытался использовать оператор if, как это:
if (!(in.next() == (""))) {
words++;
}
но я получаю исключение java.util.NoSuchElementException. Как бы я обошел NoSuchElementException и посчитал токены вместо того, чтобы возвращать их? Вот что у меня есть:
import java.util.Scanner;
public class WordCount {
/**
* Scans a string and returns the # of newline characters, words, and
* characters in an array object.
*
* @param text string to be scanned
* @return # of newline characters, words, and characters
*/
public static int[] analyze(String text) {
// Variables declared
Scanner in = new Scanner(text);
int[] values = new int[3];
int line = 0;
int words = 0;
int characters = 0;
// Checks string for # of newlines, chars, and words
for (int i = 0; i < text.length(); i++) {
char n = text.charAt(i);
if (n == '\n') {
line++;
}
if (in.hasNext()) {
characters++;
}
//this is where I think the word count statement should go
}
values[0] = line;
values[1] = words;
values[2] = characters;
return values;
}
public static void main(String[] args) {
analyze("This is\n a test sentence.");
}
Тест должен вернуть массив {1, 5, 25}.