2014-10-20 1 views
-2

Я прошу пользователя ввести его в диапазоне от 0 до 127, если они не помещают правильное значение. Я хочу, чтобы программа продолжала просить их, пока они не введут правильное значение.C++ Настраивать ввод пользователя до тех пор, пока не будет правильно

На данный момент у меня есть следующий код в классе:

void setNoteNumber (int value) 
{ 

    number = value; 

    while (value < 0 || value > 127) { 

    std::cout << "This number is not in the range of 0 - 127, please select a new value: "; 

    } 
}  

Это вид работ, за исключением, если они ввод неправильного значение моей консоль повторно выводит сообщение об ошибке. Если кто-нибудь может мне помочь, мы будем очень благодарны!

Спасибо!

+1

Откуда берутся данные? – 0x499602D2

+0

Какой тип 'номер'? И для чего он используется? – dhein

+0

Я думаю, что лучший способ - использовать отладчик и идти шаг за шагом через код. Затем вы узнаете, что случилось. Это намного лучше, чем читать только здесь решения, потому что это очень простой вопрос, и важно понимать, что происходит. –

ответ

1

Вам нужно использовать cin (запросить пользователя для ввода) внутри цикла, чтобы он действительно работал. Поскольку вы не показываете вызов cin, я предполагаю, что он вне функции, но он должен быть внутри цикла while, так как вы хотите задать пользователю несколько раз.

+0

Попытка этого теперь благодарит человека! – user3484634

1

Дизайн программы в настоящее время не так, value не меняется во время цикла, поэтому он бесконечен. Что-то вроде этого может работать лучше:

bool setNoteNumber(int value); //return false if value is outside range 
//main loop 
do { 
    value = getInput(); 
} while(setNoteNumber(value)) 
+0

Хорошо, спасибо за вашу помощь! – user3484634

1

Ваш дизайн неправильный. заявление if будет работать намного лучше.

Пример:

if (value < 0 ||value > 127) { 

std::cout << "This number is not in the range of 0 - 127, please select a new value: "; 

} 

Ваш цикл не так, потому что она бесконечна, потому что, когда значение & Значение> 127, он всегда будет работать. Вы не изменяете значение value. Цикл на самом деле не имеет смысла.

+0

Изменено это сейчас! Благодаря! – user3484634

+0

@ user3484634 Это также зависит от того, что вы делаете. Я не понимал, что с самого начала, но я думаю, что, возможно, вы хотели сделать это, пока не получите правильное значение, где цикл с продолжением; может работать лучше. – Chantola

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