2017-06-12 88 views
0

我正在做一个祈祷时间的应用程序,它由一个基本的switch语句和一个类组成。我做了一个默认的错误,但由于我有一个while语句,错误一直在循环。我怎样才能在默认停止循环的权利,我想下面循环的开关语句是我的代码 -停止默认循环

string input = Console.ReadLine(); 

while (true) 
{ 
    switch (input) 
    { 
     case "6/12/2017": 
     case "06/12/2017": 
      Console.WriteLine("Fajr - 3:32 AM"); 
      Console.WriteLine("Sunrise - 5:14 AM"); 
      Console.WriteLine("Dhuhr - 12:51 PM"); 
      Console.WriteLine("Asr - 4:53 PM");    
      Console.WriteLine("Maghrib - 8:27 PM"); 
      Console.WriteLine("Isha - 10:10 PM"); 
      Console.WriteLine(); 
      break; 

     case "6/13/2017": 
     case "06/13/2017": 
      Console.WriteLine("Fajr - 3:32 AM"); 
      Console.WriteLine("Sunrise - 5:14 AM"); 
      Console.WriteLine("Dhuhr - 12:51 PM"); 
      Console.WriteLine("Asr - 4:54 PM"); 
      Console.WriteLine("Maghrib - 8:27 PM"); 
      Console.WriteLine("Isha - 10:10 PM"); 
      Console.WriteLine(); 
      break; 

     case "6/14/2017": 
     case "06/14/2017": 
      Console.WriteLine("Fajr - 3:32 AM"); 
      Console.WriteLine("Sunrise - 5:14 AM"); 
      Console.WriteLine("Dhuhr - 12:51 PM"); 
      Console.WriteLine("Asr - 4:54 PM"); 
      Console.WriteLine("Maghrib - 8:28 PM"); 
      Console.WriteLine("Isha - 10:11 PM"); 
      Console.WriteLine(); 
      break; 

     case "6/15/2017": 
     case "06/15/2017": 
      Console.WriteLine("Fajr - 3:32 AM"); 
      Console.WriteLine("Sunrise - 5:14 AM"); 
      Console.WriteLine("Dhuhr - 12:52 PM"); 
      Console.WriteLine("Asr - 4:54 PM"); 
      Console.WriteLine("Maghrib - 8:28 PM"); 
      Console.WriteLine("Isha - 10:11 PM"); 
      Console.WriteLine(); 
      break; 

     case "6/16/2017": 
     case "06/16/2017": 
      Console.WriteLine("Fajr - 3:32 AM"); 
      Console.WriteLine("Sunrise - 5:14 AM"); 
      Console.WriteLine("Dhuhr - 12:52 PM"); 
      Console.WriteLine("Asr - 4:55 PM"); 
      Console.WriteLine("Maghrib - 8:28 PM"); 
      Console.WriteLine("Isha - 10:12 PM"); 
      Console.WriteLine(); 
      break; 

     case "6/17/2017": 
     case "06/17/2017": 
      Console.WriteLine("Fajr - 3:32 AM"); 
      Console.WriteLine("Sunrise - 5:14 AM"); 
      Console.WriteLine("Dhuhr - 12:52 PM"); 
      Console.WriteLine("Asr - 4:55 PM"); 
      Console.WriteLine("Maghrib - 8:29 PM"); 
      Console.WriteLine("Isha - 10:12 PM"); 
      Console.WriteLine(); 
      break; 

     case "6/18/2017": 
     case "06/18/2017": 
      Console.WriteLine("Fajr - 3:32 AM"); 
      Console.WriteLine("Sunrise - 5:15 AM"); 
      Console.WriteLine("Dhuhr - 12:52 PM"); 
      Console.WriteLine("Asr - 4:55 PM"); 
      Console.WriteLine("Maghrib - 8:29 PM"); 
      Console.WriteLine("Isha - 10:13 PM"); 
      Console.WriteLine(); 
      break; 

     case "6/19/2017": 
     case "06/19/2017": 
      Console.WriteLine("Fajr - 3:32 AM"); 
      Console.WriteLine("Sunrise - 5:15 AM"); 
      Console.WriteLine("Dhuhr - 12:52 PM"); 
      Console.WriteLine("Asr - 4:55 PM"); 
      Console.WriteLine("Maghrib - 8:29 PM"); 
      Console.WriteLine("Isha - 10:13 PM"); 
      Console.WriteLine(); 
      break; 

     case "6/20/2017": 
     case "06/20/2017": 
      Console.WriteLine("Fajr - 3:32 AM"); 
      Console.WriteLine("Sunrise - 5:15 AM"); 
      Console.WriteLine("Dhuhr - 12:53 PM"); 
      Console.WriteLine("Asr - 4:55 PM"); 
      Console.WriteLine("Maghrib - 8:30 PM"); 
      Console.WriteLine("Isha - 10:13 PM"); 
      Console.WriteLine(); 
      break; 

     case "6/21/2017": 
     case "06/21/2017": 
      Console.WriteLine("Fajr - 3:32 AM"); 
      Console.WriteLine("Sunrise - 5:15 AM"); 
      Console.WriteLine("Dhuhr - 12:53 PM"); 
      Console.WriteLine("Asr - 4:56 PM"); 
      Console.WriteLine("Maghrib - 8:30 PM"); 
      Console.WriteLine("Isha - 10:13 PM"); 
      Console.WriteLine(); 
      break; 

     case "6/22/2017": 
     case "06/22/2017": 
      Console.WriteLine("Fajr - 3:33 AM"); 
      Console.WriteLine("Sunrise - 5:15 AM"); 
      Console.WriteLine("Dhuhr - 12:53 PM"); 
      Console.WriteLine("Asr - 4:56 PM"); 
      Console.WriteLine("Maghrib - 8:30 PM"); 
      Console.WriteLine("Isha - 10:14 PM"); 
      Console.WriteLine(); 
      break; 

     case "6/23/2017": 
     case "06/23/2017": 
      Console.WriteLine("Fajr - 3:33 AM"); 
      Console.WriteLine("Sunrise - 5:15 AM"); 
      Console.WriteLine("Dhuhr - 12:53 PM"); 
      Console.WriteLine("Asr - 4:56 PM"); 
      Console.WriteLine("Maghrib - 8:30 PM"); 
      Console.WriteLine("Isha - 10:13 PM"); 
      Console.WriteLine(); 
      break; 

     case "6/24/2017": 
     case "06/24/2017": 
      Console.WriteLine("Fajr - 3:33 AM"); 
      Console.WriteLine("Sunrise - 5:16 AM"); 
      Console.WriteLine("Dhuhr - 12:52 PM"); 
      Console.WriteLine("Asr - 4:56 PM"); 
      Console.WriteLine("Maghrib - 8:30 PM"); 
      Console.WriteLine("Isha - 10:14 PM"); 
      Console.WriteLine(); 
      break; 

     default: 
      Console.WriteLine("Error - Please make sure you're input is similar to the example shown"); 
      break; 
    } 

} 
+0

而不是'while(true)','while(myBool)'。然后在'while'之前的某个地方定义'bool myBool = true;'。在你的默认情况下,设置'myBool = false;'。现在,一旦第一次触发'default'的情况下,'while'循环将不再是'true',因此它将退出。 – sab669

+0

您的代码将继续运行,因为您将while循环设置为true。如果你想要一个简单的解决方案,把'true'改为一个设置为true的变量,然后将该变量设置为'false' – NoReceipt4Panda

+1

你可能想要考虑把输入解析成一个'DateTime'。你应该能够以这种方式避免switch语句并处理更多的日期。 – juharr

回答

0
While (true) 

这是无限循环。你必须使用变量来完成这件事。

但是。我认为你希望在默认情况下得到用户输入。

所以,你的代码应该是这样的:

bool switchItWhenDone= true; 
while (switchItWhenDone) 
{ 
    string input = Console.ReadLine(); 
    switch (input) 
    { 
     case "6/12/2017": 
     case "06/12/2017": 
      Console.WriteLine("Fajr - 3:32 AM"); 
      Console.WriteLine("Sunrise - 5:14 AM"); 
      Console.WriteLine("Dhuhr - 12:51 PM"); 
      Console.WriteLine("Asr - 4:53 PM");    
      Console.WriteLine("Maghrib - 8:27 PM"); 
      Console.WriteLine("Isha - 10:10 PM"); 
      Console.WriteLine(); 
      break; 

     case "6/13/2017": 
     case "06/13/2017": 
     Console.WriteLine("Fajr - 3:32 AM"); 
     Console.WriteLine("Sunrise - 5:14 AM"); 
     Console.WriteLine("Dhuhr - 12:51 PM"); 
     Console.WriteLine("Asr - 4:54 PM"); 
     Console.WriteLine("Maghrib - 8:27 PM"); 
     Console.WriteLine("Isha - 10:10 PM"); 
     Console.WriteLine(); 
     break; 

    case "6/14/2017": 
    case "06/14/2017": 
     Console.WriteLine("Fajr - 3:32 AM"); 
     Console.WriteLine("Sunrise - 5:14 AM"); 
     Console.WriteLine("Dhuhr - 12:51 PM"); 
     Console.WriteLine("Asr - 4:54 PM"); 
     Console.WriteLine("Maghrib - 8:28 PM"); 
     Console.WriteLine("Isha - 10:11 PM"); 
     Console.WriteLine(); 
     break; 

    case "6/15/2017": 
    case "06/15/2017": 
     Console.WriteLine("Fajr - 3:32 AM"); 
     Console.WriteLine("Sunrise - 5:14 AM"); 
     Console.WriteLine("Dhuhr - 12:52 PM"); 
     Console.WriteLine("Asr - 4:54 PM"); 
     Console.WriteLine("Maghrib - 8:28 PM"); 
     Console.WriteLine("Isha - 10:11 PM"); 
     Console.WriteLine(); 
     break; 

    case "6/16/2017": 
    case "06/16/2017": 
     Console.WriteLine("Fajr - 3:32 AM"); 
     Console.WriteLine("Sunrise - 5:14 AM"); 
     Console.WriteLine("Dhuhr - 12:52 PM"); 
     Console.WriteLine("Asr - 4:55 PM"); 
     Console.WriteLine("Maghrib - 8:28 PM"); 
     Console.WriteLine("Isha - 10:12 PM"); 
     Console.WriteLine(); 
     break; 

    case "6/17/2017": 
    case "06/17/2017": 
     Console.WriteLine("Fajr - 3:32 AM"); 
     Console.WriteLine("Sunrise - 5:14 AM"); 
     Console.WriteLine("Dhuhr - 12:52 PM"); 
     Console.WriteLine("Asr - 4:55 PM"); 
     Console.WriteLine("Maghrib - 8:29 PM"); 
     Console.WriteLine("Isha - 10:12 PM"); 
     Console.WriteLine(); 
     break; 

    case "6/18/2017": 
    case "06/18/2017": 
     Console.WriteLine("Fajr - 3:32 AM"); 
     Console.WriteLine("Sunrise - 5:15 AM"); 
     Console.WriteLine("Dhuhr - 12:52 PM"); 
     Console.WriteLine("Asr - 4:55 PM"); 
     Console.WriteLine("Maghrib - 8:29 PM"); 
     Console.WriteLine("Isha - 10:13 PM"); 
     Console.WriteLine(); 
     break; 

    case "6/19/2017": 
    case "06/19/2017": 
     Console.WriteLine("Fajr - 3:32 AM"); 
     Console.WriteLine("Sunrise - 5:15 AM"); 
     Console.WriteLine("Dhuhr - 12:52 PM"); 
     Console.WriteLine("Asr - 4:55 PM"); 
     Console.WriteLine("Maghrib - 8:29 PM"); 
     Console.WriteLine("Isha - 10:13 PM"); 
     Console.WriteLine(); 
     break; 

    case "6/20/2017": 
    case "06/20/2017": 
     Console.WriteLine("Fajr - 3:32 AM"); 
     Console.WriteLine("Sunrise - 5:15 AM"); 
     Console.WriteLine("Dhuhr - 12:53 PM"); 
     Console.WriteLine("Asr - 4:55 PM"); 
     Console.WriteLine("Maghrib - 8:30 PM"); 
     Console.WriteLine("Isha - 10:13 PM"); 
     Console.WriteLine(); 
     break; 

    case "6/21/2017": 
    case "06/21/2017": 
     Console.WriteLine("Fajr - 3:32 AM"); 
     Console.WriteLine("Sunrise - 5:15 AM"); 
     Console.WriteLine("Dhuhr - 12:53 PM"); 
     Console.WriteLine("Asr - 4:56 PM"); 
     Console.WriteLine("Maghrib - 8:30 PM"); 
     Console.WriteLine("Isha - 10:13 PM"); 
     Console.WriteLine(); 
     break; 

    case "6/22/2017": 
    case "06/22/2017": 
     Console.WriteLine("Fajr - 3:33 AM"); 
     Console.WriteLine("Sunrise - 5:15 AM"); 
     Console.WriteLine("Dhuhr - 12:53 PM"); 
     Console.WriteLine("Asr - 4:56 PM"); 
     Console.WriteLine("Maghrib - 8:30 PM"); 
     Console.WriteLine("Isha - 10:14 PM"); 
     Console.WriteLine(); 
     break; 

    case "6/23/2017": 
    case "06/23/2017": 
     Console.WriteLine("Fajr - 3:33 AM"); 
     Console.WriteLine("Sunrise - 5:15 AM"); 
     Console.WriteLine("Dhuhr - 12:53 PM"); 
     Console.WriteLine("Asr - 4:56 PM"); 
     Console.WriteLine("Maghrib - 8:30 PM"); 
     Console.WriteLine("Isha - 10:13 PM"); 
     Console.WriteLine(); 
     break; 

    case "6/24/2017": 
    case "06/24/2017": 
     Console.WriteLine("Fajr - 3:33 AM"); 
     Console.WriteLine("Sunrise - 5:16 AM"); 
     Console.WriteLine("Dhuhr - 12:52 PM"); 
     Console.WriteLine("Asr - 4:56 PM"); 
     Console.WriteLine("Maghrib - 8:30 PM"); 
     Console.WriteLine("Isha - 10:14 PM"); 
     Console.WriteLine(); 
     break; 

    default: 
     Console.WriteLine("Error - Please make sure you're input is similar to the example shown"); 
switchItWhenDone=false; 
     break; 
} 

}

+0

如果一旦执行了默认情况并且比任何其他情况执行后还要做什么? –

+0

我明白,当默认情况下,他想停止循环。 –

2

您可以设置bool为true一旦进入默认状态。

例子:

bool end = false; 
while (!end) 
{ 
    switch (input) 
    { 
     // Your switch code 

     default: 
      end= true; 
      Console.WriteLine("Error - Please make sure you're input is similar to the example shown"); 
      break; 

    } 
} 
2

如果我理解你正确地希望此行

string input = Console.ReadLine(); 

插入while循环,每个循环开始它会给用户一个选项,以时间方式插入新的输入。

+0

现在就把我的答案和这个结合起来,你会很开心! –

1

在您的例子,你可以很容易地用一个return语句替换符:

default: 
    //... 
    return; 

因为switch语句是你方法中的最后一个。否则,我就会把内循环的另一种方法,在那里你可以再次使用return语句:

while (true) 
{ 
    switch (input) 
    { 
     //... 
     default: 
      return; 
//... 

否则有两种不同的,在我看来并不是值得推荐的解决方案:

1.使用转移标签

但是,没有人会建议这样做。它应该是这样的:

while (true) 
{ 
    switch (input) 
    { 
     //... 
     default: 
      //... 
      goto after; 
    } 
} 
after: 
; //The semicolon is only needed when the label would be the last statement in the method otherwise, as it is in your example 

2.使用可变

你可以用一个有条件的循环替换您的无限循环:

var finished = false; 
while (!finished) 
{ 
    switch (input) 
    { 
     //... 
     default: 
      //... 
      finished = true; 
      break; 
    } 
} 

这是在一个相当不错的解决方案也是如此。

顺便说一句,你的代码有另一个问题,因为你可能想把输入赋值放在while循环中。总之,我会建议这样的:

var input = Console.ReadLine(); 

while (true) 
{ 
    input = Console.ReadLine(); 
    switch (input) 
    { 
     case "6/12/2017": 
     case "06/12/2017": 
      Console.WriteLine("Fajr - 3:32 AM"); 
      Console.WriteLine("Sunrise - 5:14 AM"); 
      Console.WriteLine("Dhuhr - 12:51 PM"); 
      Console.WriteLine("Asr - 4:53 PM"); 
      Console.WriteLine("Maghrib - 8:27 PM"); 
      Console.WriteLine("Isha - 10:10 PM"); 
      Console.WriteLine(); 
      break; 

     case "6/13/2017": 
     case "06/13/2017": 
      Console.WriteLine("Fajr - 3:32 AM"); 
      Console.WriteLine("Sunrise - 5:14 AM"); 
      Console.WriteLine("Dhuhr - 12:51 PM"); 
      Console.WriteLine("Asr - 4:54 PM"); 
      Console.WriteLine("Maghrib - 8:27 PM"); 
      Console.WriteLine("Isha - 10:10 PM"); 
      Console.WriteLine(); 
      break; 

     case "6/14/2017": 
     case "06/14/2017": 
      Console.WriteLine("Fajr - 3:32 AM"); 
      Console.WriteLine("Sunrise - 5:14 AM"); 
      Console.WriteLine("Dhuhr - 12:51 PM"); 
      Console.WriteLine("Asr - 4:54 PM"); 
      Console.WriteLine("Maghrib - 8:28 PM"); 
      Console.WriteLine("Isha - 10:11 PM"); 
      Console.WriteLine(); 
      break; 

     case "6/15/2017": 
     case "06/15/2017": 
      Console.WriteLine("Fajr - 3:32 AM"); 
      Console.WriteLine("Sunrise - 5:14 AM"); 
      Console.WriteLine("Dhuhr - 12:52 PM"); 
      Console.WriteLine("Asr - 4:54 PM"); 
      Console.WriteLine("Maghrib - 8:28 PM"); 
      Console.WriteLine("Isha - 10:11 PM"); 
      Console.WriteLine(); 
      break; 

     case "6/16/2017": 
     case "06/16/2017": 
      Console.WriteLine("Fajr - 3:32 AM"); 
      Console.WriteLine("Sunrise - 5:14 AM"); 
      Console.WriteLine("Dhuhr - 12:52 PM"); 
      Console.WriteLine("Asr - 4:55 PM"); 
      Console.WriteLine("Maghrib - 8:28 PM"); 
      Console.WriteLine("Isha - 10:12 PM"); 
      Console.WriteLine(); 
      break; 

     case "6/17/2017": 
     case "06/17/2017": 
      Console.WriteLine("Fajr - 3:32 AM"); 
      Console.WriteLine("Sunrise - 5:14 AM"); 
      Console.WriteLine("Dhuhr - 12:52 PM"); 
      Console.WriteLine("Asr - 4:55 PM"); 
      Console.WriteLine("Maghrib - 8:29 PM"); 
      Console.WriteLine("Isha - 10:12 PM"); 
      Console.WriteLine(); 
      break; 

     case "6/18/2017": 
     case "06/18/2017": 
      Console.WriteLine("Fajr - 3:32 AM"); 
      Console.WriteLine("Sunrise - 5:15 AM"); 
      Console.WriteLine("Dhuhr - 12:52 PM"); 
      Console.WriteLine("Asr - 4:55 PM"); 
      Console.WriteLine("Maghrib - 8:29 PM"); 
      Console.WriteLine("Isha - 10:13 PM"); 
      Console.WriteLine(); 
      break; 

     case "6/19/2017": 
     case "06/19/2017": 
      Console.WriteLine("Fajr - 3:32 AM"); 
      Console.WriteLine("Sunrise - 5:15 AM"); 
      Console.WriteLine("Dhuhr - 12:52 PM"); 
      Console.WriteLine("Asr - 4:55 PM"); 
      Console.WriteLine("Maghrib - 8:29 PM"); 
      Console.WriteLine("Isha - 10:13 PM"); 
      Console.WriteLine(); 
      break; 

     case "6/20/2017": 
     case "06/20/2017": 
      Console.WriteLine("Fajr - 3:32 AM"); 
      Console.WriteLine("Sunrise - 5:15 AM"); 
      Console.WriteLine("Dhuhr - 12:53 PM"); 
      Console.WriteLine("Asr - 4:55 PM"); 
      Console.WriteLine("Maghrib - 8:30 PM"); 
      Console.WriteLine("Isha - 10:13 PM"); 
      Console.WriteLine(); 
      break; 

     case "6/21/2017": 
     case "06/21/2017": 
      Console.WriteLine("Fajr - 3:32 AM"); 
      Console.WriteLine("Sunrise - 5:15 AM"); 
      Console.WriteLine("Dhuhr - 12:53 PM"); 
      Console.WriteLine("Asr - 4:56 PM"); 
      Console.WriteLine("Maghrib - 8:30 PM"); 
      Console.WriteLine("Isha - 10:13 PM"); 
      Console.WriteLine(); 
      break; 

     case "6/22/2017": 
     case "06/22/2017": 
      Console.WriteLine("Fajr - 3:33 AM"); 
      Console.WriteLine("Sunrise - 5:15 AM"); 
      Console.WriteLine("Dhuhr - 12:53 PM"); 
      Console.WriteLine("Asr - 4:56 PM"); 
      Console.WriteLine("Maghrib - 8:30 PM"); 
      Console.WriteLine("Isha - 10:14 PM"); 
      Console.WriteLine(); 
      break; 

     case "6/23/2017": 
     case "06/23/2017": 
      Console.WriteLine("Fajr - 3:33 AM"); 
      Console.WriteLine("Sunrise - 5:15 AM"); 
      Console.WriteLine("Dhuhr - 12:53 PM"); 
      Console.WriteLine("Asr - 4:56 PM"); 
      Console.WriteLine("Maghrib - 8:30 PM"); 
      Console.WriteLine("Isha - 10:13 PM"); 
      Console.WriteLine(); 
      break; 

     case "6/24/2017": 
     case "06/24/2017": 
      Console.WriteLine("Fajr - 3:33 AM"); 
      Console.WriteLine("Sunrise - 5:16 AM"); 
      Console.WriteLine("Dhuhr - 12:52 PM"); 
      Console.WriteLine("Asr - 4:56 PM"); 
      Console.WriteLine("Maghrib - 8:30 PM"); 
      Console.WriteLine("Isha - 10:14 PM"); 
      Console.WriteLine(); 
      break; 

     default: 
      Console.WriteLine("Error - Please make sure you're input is similar to the example shown"); 
      return; 
    } 

} 
+0

很好的解释+1。 :) –