Професионална програма
Loading...
kristopher avatar kristopher 4 Точки

Какво прави този ред в този код? scanner.nextLine();

scanner.nextLine(); като е сам на реда какво става ( като на приложената снимка), някой може ли да обясни? Пробвах като го няма този ред и когато задам да иска 3 стринга, ми дава да попълня два и се сортират както трябва, но третия стринг не ми позволява да го въведа.

http://s176.photobucket.com/user/kristophers/media/Java/Screenshot6.png.html?sort=3&o=3

Тагове:
0
Java Advanced
martin.nikolov avatar martin.nikolov 12 Точки

Здравей,

това се случа, защото input.nextInt() не прочита символа за нов ред и този символ отива към (първото) следващото извикване на input.nextLine(), т.е. пропуска се един ред.

Решението е да извикаш input.nextLine(); след int n = input.nextInt(); (както си направил) 

1
kristopher avatar kristopher 4 Точки

Не можах да те разбера. Този код не съм го написал аз, а е от четвърта лекция пример.

0
Vasilsk avatar Vasilsk 109 Точки

Когато преди да четеш стрингове от конзолата си прочел интеджъри чрез  input.nextInt(), конзолата не минава автоматично на следващия ред, а стои на същия. Затова ако директно след  input.nextInt() въведеш String str = input.nextLine() например, конзолата ще запише в str празно място и ще мине на следващия ред. Затова ако имаш цикъл, в който искаш да пълниш стрингове в масив, ще ти даде да въведеш с 1 по-малко. Единия начин да се избегне това е като след  input.nextInt() добавиш input.nextLine(), както е в примера, който си дал.

1