Loading...
Kaloyan777 avatar Kaloyan777 17 Точки

[Technical Issue] Java Basics - scanner.nextLine()

Защо Java има нужда от scanner.nextLine(); за да изпълни 5 позиции при size=5?

Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
scanner.nextLine();

String[] lines = new String[n];

for (int i = 0; i < n; i++)
{
lines[i] = scanner.nextLine();
}

 

Въвеждам 5 за размер на масива.

Ако махна "scanner.nextLine();"(без да променям каквото и да е др.), при компилация ми дава 4 позиции за попълване, а не 5.
Бихте ли ми казали защо?

Тагове:
0
Java Advanced 19/09/2014 21:54:19
jabalka:
Темата е дублирана.
salih1f1 avatar salih1f1 188 Точки

Здравей. Давам ти линкове към две подобни теми тема1 тема2. Незнам дали си пускал през дебъгер за да видиш какво е положението, но ако си сигорно си видял, че първата позиция си стои празна. Като цяло това се случва защото ако няма scanner.nextLine(); прогарамата ще ти чете текущият ред (този в който въвеждаш n) до символа за нов ред в края на реда. Можеби причината да не работи кода ти е, че има един или повече остатъчни символи когато въвеждаш n

2
19/09/2014 20:00:16
Kaloyan777 avatar Kaloyan777 17 Точки

Без scanner.nextLine(); автоматично добавя един  празен ред преди да даде output резултата, явно го счита за input ред, затова ми дава резултат от 4 реда после въпреки че size=5, хмммм, шантава java.

0
19/09/2014 20:05:19
salih1f1 avatar salih1f1 188 Точки

scanner.nextInt(); не прочита автоматично символа за нов ред, и за това се получавало така. А и междодругото споделям мнението ти за Java :)

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