2012-11-22 230 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