Всем привет, недавно начал изучать Java и сегодня столкнулся с проблемой. У меня есть задача: сделать с помощью map карточки для запоминания слов. Для этого я спрашиваю сколько карточек, а потом постепенно добавляю их. Код ниже:
Проблема в том что если вместо //поле я напишу int firstInput = sc.nextInt(); при запуске программы будет вывод: Input the number of cards:
>>2
The card #1:
The definition of the card #1:
>>one
The card #2
>>2:
The definition of the card #2:
>>two
компилятор просто пропускает строку nameCard = sc.nextLine();, и не просит ввести значение.
Но если я вместо поле напишу int firstInput = Integer.parseInt(sc.nextLine()); то вывод будет правильный: Input the number of cards:
>>2
The card #1:
>>1
The definition of the card #1:
>>one
The card #2:
>>2
The definition of the card #2:
>>two
Так же странно, что если я вместо //поле напишу String o = sc.nextLine();
int firstInput = 2;
то вывод будет правильным:Input the number of cards:
>>2
The card #1:
>>1
The definition of the card #1:
>>one
The card #2:
>>2
The definition of the card #2:
>>two
Почему происходит такая ошибка, и почему при строке int firstInput = sc.nextInt(); он не берёт первое значение карты, а просто перепрыгивает строку? Это связано с работой сканера или с чем то ещё?
Если есть какие-нибудь полезные материалы по этой ошибке, пожалуйста, оставьте на них ссылки!
Никита Максименко
19 уровень
Проблема, помогите!
Комментарии (2)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Стас Пасинков Software Developer в Zipy Master
28 апреля 2020, 18:49
метод nextLine() возвращает строку.
в цикле же у вас используется интовая переменная i в качестве счетчика.
условие выхода из цикла указано что i будет больше, чем firstInput. поэтому логично, что firstInput тоже должно быть числом, а не строкой или еще чем-то)
если вы жестко задаете, что firstInput = 2 - тогда у вас такой код будет работать только если ввели 2. если вы введете 100, то значение переменной firstInput все-равно будет 2. то-есть, вы просто игнорируете введенное число. это не джава неправильно работает, а вы сами такой код написали :)
0
VladimirMaster
28 апреля 2020, 16:20
Никита, оформи вопрос, а то так и будешь без ответа.
P.S. Никто не любит читать чужой код, это не секрет. Но никто тем более не будет читать плохо оформленный код. Убери скриншот и положи код в тело вопроса. Оберни код в тег code.
Привыкай задавать вопрос грамотно и понятно. Тыжепрограммист. 😏🙂
+2