2014-11-01 49 views
-2

我在創建將請求用戶輸入的循環時遇到問題,並且如果輸入不是「Y」或「N」來重新提示用戶輸入一遍又一遍,直到他們給出正確的輸入。嘗試使退出序列僅在正確輸入時纔會執行

while (quitOrContinue != "Y"|"N")//cant use "Y"/"N" in the same line, how do I phrase this line? 
Console.Write("\nWould you like to process another set of bowling scores?"); 
Console.WriteLine("\nPress 'Y' to process another set or 'N' to exit the program"); 

Console.Clear();// this needs to happen if the input to run again is "Y" 
+0

我沒有看到任何循環代碼在你的問題.... – Tim 2014-11-01 23:43:36

回答

0

那麼,對於初學者來說,你實際上並沒有從用戶那裏接受任何輸入。你可以使用Console.WriteLine來輸出用戶需要的任何類型的指令,但你必須以某種方式實際捕獲它們。

要獲得輸入,您必須使用Console.Read(),您必須使用條件塊來檢查其輸入。你應該換你的代碼在while循環引用警戒值:

bool userIsDone = false; 
Console.Write("\nWould you like to process..."); 
while (!userIsDone) 
{ 
    string userInput = Console.ReadLine(); 
    // ... 
    if (userInput == "Y") 
    { 
     // process another set here 
     Console.WriteLine("\nWould you like to process..."); 
    } 
    else if (userInput == "N") 
    { 
     // exit your program 
    } 
    else 
    { 
     Console.WriteLine("That input is invalid."); 
    } 
} 

而且,你有上面的代碼 - 你應該包裝在裏面{}循環的元素,以及|是按位OR,而不是邏輯或。邏輯或(我在這種情況下你想要99%)是||,並且是邏輯的並且是& &。

+0

Console.Read返回一個int – 2014-11-01 23:52:24

+0

@ Selman22是的,我正在編輯它,以及其他一些事情。 – furkle 2014-11-01 23:52:41

0

爲什麼不使用循環?

string input = null; 
while((input = Console.ReadLine()) != "Y" || input != "N") 
{ 
    Console.WriteLine("Invalid value, please try again:"); 
} 

這裏的表達式(input = Console.ReadLine()) != "Y" || input != "N"將在循環運行之前和之後進行評估。它基本上從輸入流中讀取一行並將其分配給輸入變量,然後檢查它是不是YN它將執行循環體並再次評估表達式並要求輸入,直到條件滿足爲止。您可以使用Console.Read方法讀取一個charachter,但它會返回int,因此您需要將它投射到char

+0

當我這樣做的程序不會退出,如果我使用下面的if/else它仍然不退出。當輸入N時如何退出,或者輸入Y時回到頂端 – Ryan 2014-11-02 00:00:08

+0

循環結束後,檢查輸入值! – 2014-11-02 00:01:00

相關問題