2011-10-28 16 views
5

मेरे पास एक छोटा सी # कंसोल ऐप है जिसे मैं लिख रहा हूं।सी # कंसोल। रीडकी - विशिष्ट इनपुट के लिए प्रतीक्षा करें

मैं ऐप को या तो वाई या एन कीप्रेस के बारे में उपयोगकर्ता से निर्देश के लिए इंतजार करना चाहता हूं (यदि कोई अन्य कुंजी दबाया जाता है तो ऐप इसे अनदेखा करता है और या तो वाई या एन के लिए इंतजार करता है और फिर कोड को निर्भर करता है Y या N जवाब।

मैं इस विचार के साथ आया था,

while (true) 
{ 
    ConsoleKeyInfo result = Console.ReadKey(); 
    if ((result.KeyChar == "Y") || (result.KeyChar == "y")) 
    { 
     Console.WriteLine("I'll now do stuff."); 
     break; 
    } 
    else if ((result.KeyChar == "N") || (result.KeyChar == "n")) 
    { 
     Console.WriteLine("I wont do anything"); 
     break; 
    } 
} 

दुख की बात है, हालांकि वी.एस. कहते result.Keychat == रूप में संकार्य एक 'चार' या 'को लागू किया जा नहीं कर सकते जैसे नहीं करता है स्ट्रिंग '

कोई मदद कृपया?

अग्रिम धन्यवाद।

+0

सिंगल कोट, डबल नहीं ... (परिणाम। केकरर == 'वाई') || (परिणाम। केकर == 'वाई') – ComeIn

उत्तर

8

KeyCharchar है जबकि "Y"string है।

आप इसके बजाय KeyChar == 'Y' जैसे कुछ चाहते हैं।

+0

आपको बहुत बहुत धन्यवाद। मेरे हिस्से पर एक स्कूली लड़का त्रुटि। PHP कदम के बाद भी सी # के साथ संघर्ष! एक बार फिर धन्यवाद। – tripbrock

+0

एक विकल्प यह होगा: 'result.Key == ConsoleKey.Y' – Carol

+0

@K_Rol: यह काम कर सकता है। मुझे चिंतित होगा कि यह केवल 'वाई' और 'शिफ्ट + वाई', बल्कि 'Ctrl + Y'' स्वीकार नहीं करेगा। – Gabe

2

चेक इस बजाय

string result = Console.ReadLine(); 

और जाँच परिणाम

2

अपने की तलाश करने के बाद क्या दबाने में प्रवेश से उनकी प्रतिक्रिया पुष्टि करने के लिए इस

 void PlayAgain() 
    { 
     Console.WriteLine("Would you like to play again? Y/N: "); 
     string result = Console.ReadLine(); 
     if (result.Equals("y", StringComparison.OrdinalIgnoreCase) || result.Equals("yes", StringComparison.OrdinalIgnoreCase)) 
     { 
      Start(); 
     } 
     else 
     { 
      Console.WriteLine("Thank you for playing."); 
      Console.ReadKey(); 
     } 
    } 
0

आप शायद चाहते उपयोगकर्ता की तरह कुछ है , तो रीडलाइन सबसे अच्छा है। सामान्य तुलना जांच के लिए ऊपरी मामले में स्ट्रिंग प्रतिक्रिया को भी परिवर्तित करें। इस तरह:

string result = Console.ReadLine(); 
if (result.ToUpper().Equals("Y")) 
{ 
    // Do what ya do ... 
संबंधित मुद्दे