Проблема связана с тем, как вы организовали свой код. Вы набираете readLine()
, а затем звоните readLine()
в if/else
, затем распечатываете предыдущие токены, а затем снова вызываете readLine()
без обработки предыдущего.
public class LineByLine {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (true) {
String input = scanner.nextLine();
// check for empty line immediately.
if (input.equals("")) {
break;
}
// otherwise split it (and use the regular expression for one
// more white spaces).
String[] tokens = input.split("\\s+");
// Add space for additional tokens.
allTokens = Arrays.copyOf(allTokens, allTokens.length + tokens.length);
// copy new tokens to array.
int i = allTokens.length - tokens.length;
for (String v : tokens) {
allTokens[i++] = v;
}
}
for (String token : allTokens) {
System.out.println(token);
}
}
}
Я изменил ваш массив от whiteSpace
до tokens
, так как вы на самом деле не экономите пробелы.
Использование ArrayList
вместо массива.
Инициализация в начале.
List<String> allTokens = new ArrayList<>();
Добавление элементов.
for (String str : tokens) {
allTokens.add(str);
}
Когда закончите, напечатайте их.
for (String str : allTokens) {
System.out.println(str);
}