2013-02-04 3 views
1
string tastetryk; 

ConsoleKeyInfo tast; 
Console.ForegroundColor = ConsoleColor.White; 
Console.BackgroundColor = ConsoleColor.Blue; 
Console.Clear(); 
do 
{ 

    Console.WriteLine("Menu"); 
    Console.WriteLine(" "); 
    Console.WriteLine("Tryk en tast for at vælge funktion"); 
    Console.WriteLine(" "); 
    Console.WriteLine("I - Beregn strøm"); 
    Console.WriteLine("U - Spænding"); 
    Console.WriteLine("R - Modstand"); 
    Console.WriteLine(" "); 
    Console.WriteLine("(Esc) for at slutte "); 

    tast = Console.ReadKey(); 
    tastetryk = tast.Key.ToString(); 
    Console.Clear(); 

    switch(tastetryk) 
    { 
     case "I": 
      Console.WriteLine("du har tastet I"); 
      Console.Write("Tast Q for at komme tilbage"); 
      tast = Console.ReadKey(); 
      break; 

     case "U": 
      Console.WriteLine("du har tastet U"); 
      Console.Write("Tast Q for at komme tilbage"); 
      tast = Console.ReadKey(); 
      break; 

     case "R": 
      Console.WriteLine("du har tastet R"); 
      Console.Write("Tast Q for at komme tilbage"); 
      tast = Console.ReadKey(); 
      break; 

     default: 
      Console.WriteLine("forkert tast"); 
      Thread.Sleep(1000); 
      Console.Clear(); 
      break; 
    }     
} 
while (tast.Key == ConsoleKey.Q); 

나는이 코드를 I, U 또는 R 키를 눌러서 만들었습니다. 주 메뉴로 돌아갑니다. 내 문제는 내가 내기본값 인 경우 true (자동 루프) 일 때

답변

0

분명히 정말 나쁜 영어, 당신은 할 수 없습니다 break에 대한 = Consolekey.Q

죄송합니다 TAST과 노력, Q를 눌러 필요없이 기본에 해당하는 경우, 내가 메인 메뉴로 루프를 원하는 것입니다 루프에서 break이 깨 졌으므로 switch 문에서 벗어났습니다.

두 가지 간단한 솔루션 :

첫째, while 문에 새로운 조건을 추가, 당신은 루프를 종료해야 나타내는 부울 플래그를 추가합니다.

bool bExit = false; 

do 
{ 
    switch 
    { 
     /* 
     code here 
     */ 
     default: 
      bExit = true; 
      //etc. 
    } 
} 
while(tast.Key == ConsoleKey.Q || !bExit) 

는 지금, 나는 thid 악 순수 간주 될 수 있습니다 알고 있지만 ... 당신은 goto를 사용하여 고려 했는가?

do 
{ 
    switch 
    { 
     /* 
     code here 
     */ 
     default: 
      goto outOfLoop; 
    } 
} 
while(tast.Key == ConsoleKey.Q) 

outOfLoop: 

// etc. 

나는 두 번째 솔루션은 실제로 청소기이라고 생각하지만, 사람들은 goto 문에 격렬하게 반응 할 수있다.

+0

그래, 내가 고토를 사용하려했지만 선생님이 사용하지 말라고 했어. :) – user2040482

+0

그것은 일반적인 감정이며 부적절하게 사용되면 유지 보수하기가 매우 어려운 코드를 생성 할 수 있습니다. 다른 한편으로, 나는 마술적인 퇴장 조건을 너무 좋아하지 않는다. 일반적으로 나는 최선의 판단을 사용하라고 말할 것입니다 ...하지만이 숙제가 교사의 말을 듣고 대신 첫 번째 해결책을 사용한다면! ;) – SolarBear

관련 문제