2015-08-19 43 views
-1

所以我是用C#编程的新手。这是我做的练习,其中 应该计数,直到我按Esc或达到1 000 000,并且应该告诉我它制作了多少个循环(在我的程序中是“duerchlaeufe”),但它并不像我想的那样工作。你能帮我吗?C#练习程序不起作用

 Int32 durchlaeufe = 0, i = 0; 


     if (Console.ReadKey(true).Key != ConsoleKey.Escape) 
     { 
      do 
      { 


       Console.Write("\n {0}", i = i + 10); 
       durchlaeufe++; 
       System.Threading.Thread.Sleep(100); 

      } 
      while (i <= 1000000); 
     } 

     Console.WriteLine("\nDurchläufe:{0}", durchlaeufe); 
+1

你说的'不work'是什么意思? –

+0

_doesn't work_的意思是什么?它完美地适用于我,并说'1000010Durchläufe:100001'作为最后一部分。请更具体地说明你的问题。阅读[问]几次.. –

+2

看到“...不工作”部分http://www.learn-cocos2d.com/2014/10/missing-stackoverflow-topic-terrible-question/ – Eser

回答

2

您必须检查它不退出,如果在循环过程由用户按下(由Console.KeyAvailable)一个键,如果是的话,是否为ESC或者不是,如果是,则中断。

Int32 durchlaeufe = 0, i = 0; 

do 
{ 
    if (Console.KeyAvailable) 
    { 
     if (Console.ReadKey(true).Key == ConsoleKey.Escape) 
      break; 
    } 
    Console.Write("\n {0}", i = i + 10); 
    durchlaeufe++; 
    System.Threading.Thread.Sleep(100); 
}while (i <= 1000000); 

Console.WriteLine("\nDurchläufe:{0}", durchlaeufe); 
+0

是的,谢谢你,这是我想要的程序 –

2

当你按下ESC键,因为它不听按键内环路

0

你需要监视循环内的按键,尝试这样的事情..

Int32 durchlaeufe = 0, i = 0; 
Console.WriteLine("Press ESC to stop"); 
do { 
    while (! Console.KeyAvailable && i < 1000000) { 
     Console.Write("\n {0}", i = i + 10); 
     durchlaeufe++; 
     System.Threading.Thread.Sleep(100); 
    }  
} while (Console.ReadKey(true).Key != ConsoleKey.Escape); 

Console.WriteLine("\nDurchläufe:{0}", durchlaeufe);