2013-03-17 4 views
1
char typeClient = ' '; 
bool clientValide = false; 
while (!clientValide) 
{ 
    Console.WriteLine("\nEntrez le type d'employé (c ou g) : "); 
    clientValide = char.TryParse(Console.ReadLine(), out typeClient); 
    if (clientValide) 
     typeClient = 'c'; 
} 

:)C# TryParse 동안 while char 'g'또는 'c'가 아니면도움을 요청할 때 잠시 중단하지 않으려 고합니다. TryParse

+5

주변을 먼길하려고하는 것처럼 보입니다. ''c "'와'"g "'문자열에 대해 들어오는 문자열의 유효성을 검사하십시오 (대소 문자를 구분하지 않으려면 ToLower()를 사용하십시오). – Oded

답변

0

당신은, 나는 이런 식으로 뭔가가 당신을 위해 잘 작동합니다 정말 가까이 생각하고 있습니다 : 루프까지 계속됩니다, 그래서 사용자가 뭔가를 입력하면

char typeClient = ' '; 
while (typeClient != 'c' && typeClient != 'g') 
{ 
    Console.WriteLine("\nEntrez le type d'employé (c ou g) : "); 
    var line = Console.ReadLine(); 
    if (!string.IsNullOrEmpty(line)) { typeClient = line[0]; } 
    else { typeClient = ' '; } 
} 

기본적으로는 typeClient 변수로 입력을 읽 g 또는 c을 입력하십시오.

+2

컴파일되지 않습니다. 'ReadLine'은'char'가 아닌'string'을 리턴합니다. –

+0

사용자가'gblahblah'를 입력하면 어떻게 될까요? – antonijn

+1

@DrewNoakes : 맞아, 고마워. 코드를 수정했다. 그리고 저는 지금 Visual Studio 앞에 앉아있는 것이 아닙니다. OP가 아이디어를 얻도록 돕기 위해 노력하고 있습니다. –

5
string input; 
do { 
    Console.WriteLine("Entrez le type d'employé (c ou g):"); 
    input = Console.ReadLine(); 
} while (input != "c" && input != "g"); 

char typeClient = input[0]; 
5

사용자는 C 또는 g을 누른 후를 Enter 키를 누릅니다있다, 당신은 Console.ReadLine 사용하는 것입니다. 응답이 즉각적이되도록 ReadKey을 대신 사용하십시오.

bool valid = false; 
while (!valid) 
{ 
    Console.WriteLine("\nEntrez le type d'employé (c ou g) : "); 
    var key = Console.ReadKey(); 
    switch (char.ToLower(key.KeyChar)) 
    { 
     case 'c': 
      // your processing 
      valid = true; 
      break; 
     case 'g': 
      // your processing 
      valid = true; 
      break; 
     default: 
      Console.WriteLine("Invalid. Please try again."); 
      break; 
    } 
}