Проблем с прочитането на String input от конзолата с класа Scanner
Здравейте колеги,
Имам въпрос относно взимането на String input от конзолата, по дълъг от една дума. Нека да обясня:
Да кажем, че имаме следния примерен код:
---------------------------------------------------------------------------------------------------------------------------------
import java.util.Scanner;
public class demo {
public static void main(String[] args) {
Scanner console = new Scanner(System.in);
int length = console.nextInt();
for (int index = 0; index < length; index++) {
String currentStr = console.nextLine();
}
}
}
---------------------------------------------------------------------------------------------------------------------------------
Въвеждаме стойност за length от конзолата (примерно length = 4). След това влизаме в цикъла по-долу и искаме да въведем 4 на брой String-a (от index 0 до index 3 включително), по-дълги от една дума и съдържащи whitespaces. Примерно "test 123 test 123". Без проблем въвеждаме първите 3 String-a, но for цикълът спира изпълнението си и не успяваме да вземем последната променлива.
Въпросът ми е: Как можем да взимаме n брой String-ове като input, съдържащи whitespaces без да възниква този проблем?
П.П. До колкото знам next() методът на Scanner взима String до whitespace и след това веднага продължава на следващия ред. Моля за помощ, така че ако знаете къде бъркам или как се реализиране нещо толкова (привидно) просто, пишете.
Здрасти
Console.next() беше и моето заобиколно решение на този проблем, докато не се сблъсках с някои задачи, в които да кажем трябва да вземеш index-и на String[] масив, които съдържат whitespace. Примерно имаш n брой елементи на такъв масив, които трябва да са цели изречения. Тогава Console.next() не върши работа, защото взима input до първия whitespace и след това прекъсва итерацията.
Най-добрият вариант е явно предложеното по-горе от колегите - целия input да го слагаш в String променливи с nextLine() и после да parse-ваш към типа, който на теб ти трябва (int, double, char, т.н.).
Java-ичката има някакви подобни дразнещи подробности, с които тепърва се сблъсквам и е малко фрустрация, но ще се научи.