2015-09-21 71 views
0

不知道我是否忽略了一些非常簡單的東西,但我試圖製作一個程序,允許用戶輸入2個字母中的1個,然後根據輸入運行代碼。似乎很簡單,但我遇到了幾種我認爲可以工作的方式的錯誤。下面是代碼:如何檢查用戶輸入與如果命令

string name = (Console.ReadLine()); 
Console.WriteLine("Is " + name + " ok?"); 
Console.WriteLine("\n(Y)es\n(N)o"); 
char ansys = Console.ReadKey(); 
if (ansys = ConsoleKey.Y) 
    Console.Clear(); 
else 
{ 
    Console.WriteLine(); 
    Console.WriteLine("Enter letters only"); 
} 

我在其他部分(未完)加入只是爲了得到一個想法,如果,如果我與預期的目標會朝着正確的方向爲好。如果Y和N都不按這種方式,我能否做出觸發的else語句?

回答

1

嗯,首先,你這是一個分配,而不是比較:

if (ansys.Key = ConsoleKey.Y) 

是錯誤的,使用:

if (ansys.Key == ConsoleKey.X) 

==是比較=是分配。不要混淆他們,這可能會導致嚴重的問題。

對於您的問題,如果您只是添加else if語句來檢查「否」答案,那麼如果按下Y或N,else語句將不會被觸發。如果至少如果語句被執行,else語句將不會被執行。

您的代碼應該是這樣的:

if (ansys == ConsoleKey.Y) { 
    // code if yes 
} 
else if (ansys == ConsoleKey.N) { 
    // code if no 
} 
else { 
    // code if neither 
} 

編輯: 因爲我的主要語言不是C#,我看了看文件,檢查我的答案。我想,如果你使用ReadKey()它不返回ConsoleKey,它返回struct ConsoleKeyInfo。您需要使用ConsoleKeyInfoKey成員才能訪問按下的按鍵。請重新檢查代碼。

0

試試這個辦法:

ConsoleKeyInfo cki; 
cki = Console.ReadKey(); 

if (cki.Key == ConsoleKey.Y) 
{ 
    Console.Clear(); 
} 
else if (cki.Key == Console.N) 
{ 
    Console.Clear(); 
} 
else 
{ 
    Console.WriteLine(); 
    Console.WriteLine("Enter letters only"); 
} 

你可以找到個例子在這裏:ReadKey - examples

0

試試這個:

string name = (Console.ReadLine()); 
Console.WriteLine("Is " + name + " ok?"); 
Console.WriteLine("\n(Y)es\n(N)o"); 
var ansys = Console.ReadKey(); 
if (ansys.KeyChar == 'y' || ansys.KeyChar == 'Y') 
{ 
    //Handle yes case 
} 
if (ansys.KeyChar == 'n' || ansys.KeyChar == 'N') 
{ 
    //Handle no case 
} 
else 
{ 
    Console.WriteLine(); 
    Console.WriteLine("Enter letters only"); 
} 
0

試試這個(想不出測試)

  • 這將要求名稱直到確認答案是Y
  • 如果詢問Y或N時的輸入是另一回事,它會再次詢問名稱確認。

    string name = ""; 
    while (name.equals("")) 
    { 
        name = (Console.ReadLine()); 
        Console.WriteLine("Is " + name + " ok?"); 
    
        String answer = ""; 
        while(answer.equals("")) 
        { 
         Console.WriteLine("\n(Y)es\n(N)o"); 
         char ansys = Console.ReadKey(); 
         if (ansys == ConsoleKey.Y || ansys == ConsoleKey.N) 
         { 
          answer = ansys.ToString(); 
          Console.Clear(); 
         } 
         else 
         { 
          Console.WriteLine(); 
          Console.WriteLine("Enter letters only!!"); 
         } 
        } 
        if(!answer.equals("Y")) 
         name = ""; 
    } 
    

林不知道如果ansys.ToString()是一個有效的方法,如果在情況下返回「Y」串按下的鍵爲Y