2016-10-29 41 views
-4

所以,我想要做的是让我的while循环根据不同的关键词做不同的事情。我想要的是,当我输入yes时,我希望它退出程序,当我输入no时,它会打印一首新歌,并且如果出现拼写错误,会弹出消息并允许用户重新输入是或否来打印同一首歌曲。根据这三个命令,我要打印4或5首歌曲。在我最后的while循环中。我希望它在每次用户类型继续时重复播放歌曲,并在用户键入yes时结束。我希望在出现拼写错误时提示用户再次输入相同的内容。这工作之前,现在它没有。当我拼写错误时,它会提示我再次输入,但不会打印出该循环中的歌曲。它会将我发送给最后一个while循环,忽略它们之间的所有代码。最后一个循环只会识别拼写错误,是的,不会继续,即使它以前做过。为什么我的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

请解释为什么这个问题是得票低。至少留下评论为什么。我认为这个网站应该可以帮助用户解决问题。如果你没有反馈,我怎么知道你为什么不喜欢我的问题。 –

+2

*我该怎么知道你为什么不喜欢我的问题*阅读[问],你在本网站上呈现的第一页,并制作[mcve]。 – Tunaki

+0

是更好吗?我认为我的第一个问题很清楚。当我加入 –

回答

-3

你的问题是有点长。我们不需要一个故事,只需要解释你的问题和一点代码,而不是你的整个班级。尝试把你的while循环放在外面。在称为babySleep的while循环之外有一个字符串,它以“no”开头。然后,当(babySleep.equals(“no”))执行你的代码时,最后检查宝宝是否睡眠,如果是,继续,否则,while循环将会重新执行。的.equals尝试.equalsIgnoreCase,使用户可以键入“Yes”或“YES”等

+0

我刚刚更新了我列出的代码。我已经把它切换到equalsIgnoreCase(),但是我忘了在这里复制它。 –

0

基础上的评论,这听起来像有太多的(潜在的)相关的代码为我们乘风破浪。

有三种方式,你可以用此进行。

  • 你可以学习如何使用调试器在你的IDE。使用断点和单步执行,并找出其中的错误是,

  • 您可以注释掉部分代码来追踪问题出在哪里。这也可以帮助您创建一个MCVE

  • 您可以通过将常见/重复的代码重构为方法来简化代码。例如“最后一个循环”部分非常重复。

关于最后一点,它实际上可能会很少,抛出此代码路程,重新开始......搞清楚什么共同的代码可以作为方法来实现后的工作。

相关问题