Насколько я до сих пор читал в своем учебнике для класса, в модулях для своего класса и в 2 часа работы, я не могу понять, почему мой код не работает. Цикл do while в основном методе работает правильно, но do while while в моих методах get не зацикливаются. Я ввел неправильный номер, я получаю сообщение об ошибке, а затем вместо того, чтобы просить номер снова, он переходит к следующему методу get.Java do while Loops not looping
Надеюсь, что это что-то простое, что я пропустил, но я был бы признателен за любую помощь, которую я мог бы получить от этого.
Вот код для моего метода getHome:
public static int getHome()
{
int homeNum;
String home;
do
{
home = JOptionPane.showInputDialog(null,"Enter 1(apartment), 2(house),"
+ " or 3(dorm).","Dwelling Type", JOptionPane.QUESTION_MESSAGE);
homeNum = Integer.parseInt(home);
if(!(homeNum == 1) && !(homeNum == 2) && !(homeNum == 3))
{
JOptionPane.showMessageDialog(null, "The value for dwelling type "
+ "must be 1(apartment), 2(house), or 3(dorm)", "Dwelling"
+ "Type Error", JOptionPane.ERROR_MESSAGE);
}
return homeNum;
}
while(homeNum < 0 || homeNum > 3);
И код в основной метод, который вызывает этот метод:
public static void main(String[] args)
{
String response;
do
{
petRec(getHome(), getHours());
response = JOptionPane.showInputDialog(null, "Do you want to continue?" +
"\nEnter Y for yes and anything else for no.", "Continue?", +
JOptionPane.QUESTION_MESSAGE);
}
while(response.equalsIgnoreCase("y"));
}
Просто для уточнения здесь метод petRec:
public static void petRec(int homeType, double hoursAtHome)
{
String pet;
if(homeType == 1 && hoursAtHome >= 10)
pet = "Cat";
else
if(homeType == 1 && hoursAtHome < 10)
pet = "Hamster";
else
if(homeType == 2 && hoursAtHome >= 18)
pet = "Pot-Bellied Pig";
else
if(homeType == 2 && hoursAtHome >= 10 && hoursAtHome <= 17)
pet = "Dog";
else
if(homeType == 2 && hoursAtHome < 10)
pet = "Snake";
else
if(homeType == 3 && hoursAtHome > 6)
pet = "Fish";
else
if(homeType == 3 && hoursAtHome < 6)
pet = "Ant Farm";
else
pet = "Nothing";
JOptionPane.showMessageDialog(null, "You should get a " + pet + "!",
"Recommended Pet", JOptionPane.INFORMATION_MESSAGE);
}
В прошлом году я принял интро к Visual Basic и имел бесконечные циклы, в этом году я беру Java и не могу заставить цикл повторять. Метод getHours структурирован почти идентично методу getHome только с различными переменными и формулировкой в подсказке. Программа должна отображать сообщение об ошибке, когда вводится номер, который не является 1, 2 или 3, а затем цикл, чтобы снова запросить номер. Он отображает сообщение об ошибке, но затем продолжает запрашивать часы. Снова я очень ценю любую помощь, которая может быть предложена. Это задание не должно появляться до субботы, но у меня есть только 2 дня для работы над этим. Заранее спасибо за помощь :)
возвращение в петлю? – StackFlowed