gpt4 book ai didi

Java do while 循环不循环

转载 作者:行者123 更新时间:2023-12-01 07:59:57 26 4
gpt4 key购买 nike

据我到目前为止在类教科书、类模块以及 2 个多小时的搜索中所阅读的内容,我无法弄清楚为什么我的代码不起作用。main 方法中的 do while 循环工作正常,但 get 方法中的 do while 循环没有循环。我输入了错误的号码,收到错误消息,然后它不再询问该号码,而是转到下一个 get 方法。

我希望这是我忽略的一些简单的事情,但如果我能在这方面获得任何帮助,我将不胜感激。

这是我的 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);
<小时/>

以及调用该方法的main方法中的代码:

 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 天的休息时间来完成这项工作。预先感谢您的帮助:)

最佳答案

return语句移至循环外部:

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);

}
}
while(homeNum < 0 || homeNum > 3);
return homeNum;
}

实际上,您将从第一次循环迭代结束时的方法返回。您可能还想捕获 parseInt 调用可能引发的潜在 NumberFormatException

另外,请注意,这将允许输入 0。也许这是设计使然;也许是一个疏忽。我说不出来。

关于Java do while 循环不循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26108503/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com