2012-11-22 158 views
2

我不能在这里看到问题。陷入无限循环

当我调用条目时,我陷入了无限循环。

我在做wcf,所以我让我的服务器正常工作。这是我的客户。一切工作,如果我把环出。但我需要这些菜单。所以我知道我的代码是正确的,但我的循环不是。

看不清我要去哪里错了。

class Client 
{ 
    static void Main(string[] args) 
    { 
     try 
     { 
      BikeReference.BikeSalesClient bikeRef = new BikeClient.BikeReference.BikeSalesClient(); 
      String menu = "\n\nEnter:\n" + 
       "0 to get all the bike stock;\n" + 
       "1 to get all the bike types;\n" + 
       // ... 
       "8 to quit:\n"; 

      Console.WriteLine(menu); 

      // will throw FormatException if not int 
      int entry = int.Parse(Console.ReadLine()); 

      do 
      { 
       switch (entry) 
       { 
        case 0: 
         foreach (var obj in bikeRef.GetAllBikeStock()) 
         { 
          Console.WriteLine(""); 
          Console.WriteLine("Bike ID: {0}", obj.IdBikeStock); 
          Console.WriteLine("Bike Type ID: {0}", obj.IdBikeType); 
          // ... 
          Console.WriteLine("Sold: {0}", obj.isItSold); 
          //break; 
         } 
         break; 

        case 1: 
         Console.WriteLine(bikeRef.UpdateBikeStock(15)); 
         break; 

        default: 
         Console.WriteLine("Unrecognised option..."); 
         break; 
       } 
      } 
      while (entry != 7); 
     } 

     catch (Exception)//(Exception e) 
     { 
      // Console.WriteLine("{0} Exception caught.", e); 
     } 
    } 
} 

回答

5

改变循环

int entry = 0; //Init 
do 
{ 
    Console.WriteLine(menu); 

    // will throw FormatException if not int 
    entry = int.Parse(Console.ReadLine()); 
    ... 
} while (entry != 7); 
+0

错误在此行中当前上下文\t中不存在名称'条目':while(entry!= 7); – user1234167

+0

初始条目外循环(我加入回答) –

+0

对不起,我不知道你的意思? – user1234167

4

在循环内部,您并未修改变量“entry”。所以,除非你的第一个条目= 7,你会停留在你的循环,因为(entry != 7)它始终是真实的while (entry != 7);

switch (entry)之前添加行entry = int.Parse(Console.ReadLine());这样,您将继续要求“项”给出的可能进入是等于7.因此,退出循环。

int entry; 

    do 
    { 
     Console.WriteLine(menu); 

     entry = int.Parse(Console.ReadLine()); 
     switch (entry) 
     //... 
    }while (entry != 7); 
+0

错误1个语法错误,“(”预计 错误2语法错误,“而“预期 错误3无效表达术语”诠释 这是我得到的,当我加入该行的错误? – user1234167

+0

见,我已经把例子。没有工作? – dreamcrash

+0

错误局部变量命名为‘入口’不能在这个范围内声明,因为它会给'entr'赋予不同的含义y',已经在'父母或当前'范围内用来表示别的东西我也会和你一起得到这个 – user1234167

0

你必须等待开关后里面输入您的输入变量。否则输入不能成为= 7

1

正如上面写你必须改变循环内的entry变量:

class Client 
{ 
    static void Main(string[] args) 
    { 
     try 
     { 
      BikeReference.BikeSalesClient bikeRef = new BikeClient.BikeReference.BikeSalesClient(); 
      String menu = "\n\nEnter:\n" + 
       "0 to get all the bike stock;\n" + 
       "1 to get all the bike types;\n" + 
       // ... 
       "8 to quit:\n"; 

      Console.WriteLine(menu); 

       // will throw FormatException if not int 
       int entry = int.Parse(Console.ReadLine()); 

      do 
      { 
       switch (entry) 
       { 
        case 0: 
         foreach (var obj in bikeRef.GetAllBikeStock()) 
         { 
          Console.WriteLine(""); 
          Console.WriteLine("Bike ID: {0}", obj.IdBikeStock); 
          Console.WriteLine("Bike Type ID: {0}", obj.IdBikeType); 
          // ... 
          Console.WriteLine("Sold: {0}", obj.isItSold); 
          //break; 
         } 
         break; 

        case 1: 
         Console.WriteLine(bikeRef.UpdateBikeStock(15)); 
         break; 

        default: 
         Console.WriteLine("Unrecognised option..."); 
         break; 
       } 
      entry = int.Parse(Console.ReadLine()); 
      } 
      while (entry != 7); 
     } 

     catch (Exception)//(Exception e) 
     { 
      // Console.WriteLine("{0} Exception caught.", e); 
     } 
    } 
} 
+0

仍然有错误 – user1234167