所以,我想要做的是让我的while循环根据不同的关键词做不同的事情。我想要的是,当我键入yes时,我希望它退出程序,当我输入no时,为了打印新歌,如果有拼写错误,则弹出一条消息并允许用户重新输入yes或no以打印相同的歌曲。我根据这三个命令打印出4或5首歌曲。在我最后的while循环中。我想让它在每次用户类型继续时重复播放歌曲,并在用户键入yes时结束。如果出现拼写错误,我希望在提示用户再次输入的地方发生同样的事情。这之前有效,现在却没有。当我拼写错误时,它会提示我再次输入,但不会在该循环中打印出该歌曲。它会将我发送到最后一个while循环,忽略其间的所有代码。最后一个循环只能识别拼写错误,是的,不是继续,即使之前也是如此。
这是一个歌曲循环和我的最后一个循环:
import java.io.*;
import java.util.*;
public class FullNurseryRhymes
{
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
String aBCs, neverEnds, frogs, frogs2, monkeys, hdd, hdd2;
NurseryRhymes rhymes = new NurseryRhymes();
{
System.out.println("Is the baby asleep? yes\\no");
frogs=input.next();
int byeFrog = 2;
for(int i = 3; i >= 1; i--)
{
if (frogs.equalsIgnoreCase("no"))
{
System.out.print(i + " " + rhymes.getFrogs());
System.out.println(" " + byeFrog + " " + rhymes.getFrogs2());
byeFrog -= 1;
}
else if (frogs.equalsIgnoreCase("yes"))
{
System.out.println("The baby is asleep");
System.exit(0);
}
while(!frogs.equalsIgnoreCase("no"))
{
System.out.println("Non requested input, please retry.");
System.out.println("\nIs the baby asleep? continue\\yes");
frogs = input.next();
if(frogs.equalsIgnoreCase("no"))
{
System.out.print(i + " " + rhymes.getFrogs());
System.out.println(" " + byeFrog + " " + rhymes.getFrogs2());
byeFrog -= 1;
}
else if (frogs.equalsIgnoreCase("yes"))
{
System.out.println("The baby is asleep");
System.exit(0);
}
}
}
}
//last loop
{
System.out.println("Is the baby asleep? continue\\yes");
neverEnds = input.next();
while(neverEnds.equalsIgnoreCase("continue"))
{
System.out.println(rhymes.getNeverEnds());
System.out.println("Is the baby asleep? continue\\yes");
neverEnds = input.next();
}
if(neverEnds.equalsIgnoreCase("yes"))
{
System.out.println("The baby is asleep");
System.exit(0);
}
while(!neverEnds.equalsIgnoreCase("continue")||!neverEnds.equalsIgnoreCase("yes"))
{
System.out.println("Non requested input, please retry");
System.out.println("\nIs the baby asleep? continue\\yes");
neverEnds = input.next();
while (neverEnds.equalsIgnoreCase("continue"))
{
System.out.println(rhymes.getNeverEnds());
System.out.println("Is the baby asleep? continue\\yes");
neverEnds = input.next();
if(neverEnds.equalsIgnoreCase("yes"))
{
System.out.println("The baby is asleep");
System.exit(0);
}
}
if (neverEnds.equalsIgnoreCase("yes"))
{
System.out.println("The baby is asleep");
System.exit(0);
}
}
}
答案 0 :(得分:0)
根据评论,听起来有太多(可能)相关的代码供我们使用。
有三种方法可以解决这个问题。
您可以在IDE中学习如何使用调试器。使用断点和单步执行,找出错误的位置。
您可以注释掉部分代码以追踪问题所在。这也可以帮助您创建MCVE
您可以通过将常用/重复代码重构为方法来简化代码。例如"最后一个循环"部分非常重复。
最后一点,在解决了可以作为方法实现的公共代码之后,抛弃这些代码并重新开始实际上可能不那么重要了。
答案 1 :(得分:-3)
你的问题有点长。我们不需要一个故事,只是解释你的问题和一些代码,而不是你的全班。尝试将while循环放在外面。在while循环外面有一个名为babySleep的字符串,以" no"开头。然后,while(babySleep.equals(" no")执行你的代码。然后在最后,检查宝宝是否是睡眠,如果他是,继续,如果没有,while循环将重新另外,代替.equals尝试.equalsIgnoreCase,这样用户就可以输入"是"或" yES"等。