Я создал конструктор для ввода названия лица, будь то его миссис Миссис Мисс и т. Д. И когда пользователь ввел что-то другое, как «мистер», он повторит и снова попросит название пользователя. Но вот в чем проблема: когда моя программа спросит у пользователя название, и когда вы ввели его правильно, он снова попросит пользователя за титул, даже если я правильно введу название. Например:Первый ввод просто повторяется
Enter your title (Mr,Miss,Ms, Mrs): mr
Re enter your title (Mr, Miss, Ms, Mrs):
, но когда вы ввели правильно на втором вводе, он перейдет к следующему вопросу.
здесь программа
public void setoptions(String title1)
{
String title0 = "Mr";
String title2 = "Mrs";
String title3 = "Ms";
String title4 = "Miss";
String choice;
while(!(title0.equalsIgnoreCase(title) || title2.equalsIgnoreCase(title) || title3.equalsIgnoreCase(title)
|| title4.equalsIgnoreCase(title)))
{
System.out.println("Re enter your title (Mr, Miss, Ms, Mrs): ");
choice=keyboard.nextLine();
title = choice;
}
title = title1;
}
спасибо :)
что 'title1' стоять, и где объявлен' title'? –
Метод сеттера должен * не * запрашивать у пользователя исправление ошибки в переданном параметре. Вызывающий должен сделать это и только вызвать метод с правильным значением. --- Последняя инструкция присваивает параметру 'title1' поле' title'. Код выше, который будет * не * изменять это поведение, поэтому он бессмыслен и просто путает, что цикл предлагает повторно ввести значение, а затем переходит к игнорированию значения, если оно правильно. Вы, вероятно, имели в виду все ссылки на 'title' в цикле, чтобы ссылаться на' title1'. – Andreas
Вместо этого вы не сравниваете свои параметры с 'title1', но' title', что в данный момент, вероятно, равно null. (Я не комментирую здесь проблемы дизайна, которые уже охвачены другими, и вы должны прислушаться к их советам). – Thomas