Loading...
Neven avatar Neven 38 Точки

Проблем с прочитането на 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 и след това веднага продължава на следващия ред. Моля за помощ, така че ако знаете къде бъркам или как се реализиране нещо толкова (привидно) просто, пишете. smile

Тагове:
2
Java Advanced
Emil_Aleksandrov avatar Emil_Aleksandrov 33 Точки

Здравей колега,
аз също имах този проблем,като решението е вместо :
String currentStr = console.nextLine();
да стане :
String currentStr = console.next();

1
Neven avatar Neven 38 Точки

Здрасти smile

Console.next() беше и моето заобиколно решение на този проблем, докато не се сблъсках с някои задачи, в които да кажем трябва да вземеш index-и на String[] масив, които съдържат whitespace. Примерно имаш n брой елементи на такъв масив, които трябва да са цели изречения. Тогава Console.next() не върши работа, защото взима input до първия whitespace и след това прекъсва итерацията. 

Най-добрият вариант е явно предложеното по-горе от колегите - целия input да го слагаш в String променливи с nextLine() и после да parse-ваш към типа, който на теб ти трябва (int, double, char, т.н.). 

Java-ичката има някакви подобни дразнещи подробности, с които тепърва се сблъсквам и е малко фрустрация, но ще се научи. smile

2
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.