2014-02-11 1 views
0

Я делаю программу, которая позволяет мне де-кодировать значения резисторов в colours.However даже после поиска решений в Интернете, я до сих пор не получаю почему я не мог это исправить. Я только что узнал об этом около 4 месяцев, поэтому я довольно любитель в этом.input.nextLine() не ждет ввода и немедленно запускает метод

Предполагается, что он должен работать как: Меню> Выбрать1> Первый цвет> Выбор> Второй цвет> Выбор> Четвертый цвет> Выбор> Пятый цвет> Выбор> ПоказатьDecodedColour> LoopToMenu.

Но когда я выбираю 1 в меню, я сразу же получить «Введите номер для первой цветной полосы: Invalid Количество пожалуйста, введите Ваш номер:»

Я проверил значение моего Int активатора и всегда -1.

Пожалуйста, помогите!

Мой код: http://pastebin.com/ezVHLxYj

Это рабочий код, а потому что это crashable, профессор попросил меня использовать функцию переключения вместо другого, если, и еще несколько вопросов, таких как преобразование строки в Int в предотвращения ошибок в чтение входов: http://pastebin.com/6YM4ztZXo

+0

IMO есть слишком много кода ... один совет: измените оператор 'switch' на просто:' four [k] = OneColour [активатор]; ' – alfasin

+1

[** Читать этот пост **] (http: /christprogramming.wordpress.com/2014/01/30/java-common-mistakes-1/), это распространенная ошибка при использовании 'nextInt()' before 'nextLine()' – Christian

+0

@alfasin haha ​​да это мой проект для программирования поэтому профессор ожидает качественную работу программиста :(Хмм, да, я понял вашу идею. Я использовал функцию переключения, поэтому, если число недействительно, независимо от символов или цифр, оно будет печатать «Недопустимый». Есть ли способ отслеживать ваши метод? – user3294206

ответ

0

проблема возникает потому, что nextInt() не читает символ новой строки, введенный пользователем (когда он нажал Enter). Поэтому этот символ новой строки остается в буфере, а метод nextLine() его потребляет. Вот почему выглядит nextLine(). За дополнительной информацией, пожалуйста, зайдите на этот пост: Using nextInt() before nextLine().

Примечание:

В switch(choices) ..., линии

a = Integer.parseInt("0"); 

может быть просто заменены

a = 0; 

аналогичны для каждого случая.

+0

Я решил этот вопрос для этой темы! Благодаря! – user3294206

Смежные вопросы