2016-09-27 51 views
0

我做了一個簡單的程序,詢問用戶的名字,然後是1或2的數字,然後將他們的姓名和號碼寫入控制檯。有沒有辦法讓多條件的循環? c#

我遇到的問題是,我不知道如何製作,以便用戶只能在一個循環中輸入數字1或2(我假設有一些明顯的缺失)。

代碼:

 string strName; 
     string strNumber; 
     int intNumber; 

     Console.WriteLine("What is your name?"); 
     strName = Console.ReadLine();   

     Console.WriteLine("Please enter a number (1 or 2)"); 
     strNumber = Console.ReadLine(); 
     bool test = int.TryParse(strNumber, out intNumber); 

     while (intNumber >2) 

     { 
      Console.WriteLine("Please enter a number (1 or 2)"); 
      strNumber = Console.ReadLine(); 
      int.TryParse(strNumber, out intNumber); 
     } 
     while (intNumber < 1) 

     { 
      Console.WriteLine("Please enter a number (1 or 2)"); 
      strNumber = Console.ReadLine(); 
      int.TryParse(strNumber, out intNumber); 
     } 
     while (test == false) 

     { 
      Console.WriteLine("Please enter a number (1 or 2)"); 
      strNumber = Console.ReadLine(); 
      int.TryParse(strNumber, out intNumber); 
     } 


     Console.WriteLine("Welcome, your name is "+ strName+ " your number is " + intNumber); 
     Console.ReadKey(); 

正如你可以從代碼中看到上面我有3個獨立的循環中,因爲它們從頂部運行到底它創建了一個問題,一旦他們都已經過去了,他們不再循環,所以用戶可以輸入:10,f然後7,程序就可以了。

如果還有另一種更簡單的方式做我想做的事情,請告訴我。

-Thanks

+1

您是否嘗試過'if'語句? – Stefan

回答

2

你的意思是這樣?

int response = 0; 

while (response != 1 && response != 2) 
{ 
    Console.WriteLine("Please enter a number (1 or 2)"); 
    var strNumber = Console.ReadLine(); 
    int intNumber; 
    if (int.TryParse(strNumber.Trim(), out intNumber)) 
    { 
     response = intNumber; 
    } 
} 
+0

這將永遠循環。 'response'將始終不等於1或2. – Abion47

+0

oops我的壞。固定。 – kemiller2002

1

您可將所有這些while循環...

while (intNumber < 1 || intNumber > 2 || ...) 
{ 
} 
0

您可以根據需要爲一個循環添加儘可能多的條件。我不知道我有你應該實現希望這有助於什麼邏輯:

 string nameStr = String.Empty; 
     string numberStr = String.Empty; 
     int parsedNumber = 0; 
     bool continueLoop = true; 
     bool isParsed = true; 

     do 
     { 
      try 
      { 
       Console.WriteLine("What is your name?"); 
       nameStr = Console.ReadLine(); 

       Console.WriteLine("Please enter a number (1 or 2)"); 
       numberStr = Console.ReadLine(); 
       isParsed = int.TryParse(numberStr, out parsedNumber); 
       if (parsedNumber > 2) 
       { 
        ///todo: Implement your Logic here! 
       } 
       else if (parsedNumber < 1) 
       { 
        ///todo: Implement your Logic here! 
       } 
       else 
       { 
        ///todo: Implement your Logic here!       
       } 
      } 
      catch (Exception) 
      { 
       continueLoop = false; 
      } 
     } while (isParsed && continueLoop); 
0

如果您希望使用多個條件FOR loop,下面是一個例子

for(int i=0,j=0;i<5&& j>-5;i++,j--){ 
//Do something 
} 
相關問題