0 c# visual-studio-2010 visual-studio visual-studio-2012 visual-studio-2013
我试图在X秒后关闭控制台窗口,这是一个例子:
我的程序说"键入数字:"
然后我键入"1945"
输入数字后控制台显示"Unlocked".
问题是我希望控制台在3-4秒后重新运行原始消息,这样它就可以在循环中连续执行此操作.
在下面我已经包含了当前的代码,并在我希望它做我需要的东西的地方发表评论.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace portkod
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Kod:");
int kod = Convert.ToInt32(Console.ReadLine());
DateTime tiden = DateTime.Now;
if (kod == 1946)
{
Console.Clear();
//After this message comes up I want the program to ask for "Kod:"
//again after like 3-4 seconds.
Console.WriteLine("Unlocked!");
}
else if (kod != 1946)
{
Console.Clear();
Console.WriteLine("Locked!");
}
Console.ReadLine();
}
}
}
Run Code Online (Sandbox Code Playgroud)
你可以这样做.
GetIntFromConsole从控制台读取,只有在给出有效整数时才返回nr,如果没有再次询问.
只要用户在1946年没有给出,程序会在4秒后重复该问题,并标记为"已锁定"
using System;
using System.Threading;
namespace Repeat
{
class Program
{
static int GetIntFromConsole(string label)
{
int result;
string input;
do
{
Console.Write("{0}: ", label);
input = Console.ReadLine();
} while (!int.TryParse(input, out result));
return result;
}
static void Main(string[] args)
{
int result;
result = GetIntFromConsole("Kod");
while (result != 1946)
{
Console.WriteLine("Locked");
Thread.Sleep(4000); // 4 seconds = 4000 milliseconds
result = GetIntFromConsole("Kod");
}
Console.WriteLine("Unlocked");
}
}
}
Run Code Online (Sandbox Code Playgroud)
根据要求,我会尝试解释一下
可以从程序内的任何位置调用GetIntFromConsole,并且只返回有效的解析整数,这意味着空字符串,或者除了数字之外的任何其他内容都无法正确解析,并且用户必须重试
这里使用的循环是do {this logic} while(条件满足)
这意味着,当您使用do/while循环时,您将始终进入此循环,直到while之后的条件返回false
Main中的while循环首先检查一个条件,如果这个条件为真,它进入循环,否则它会跳转到Console.WriteLine("Unlocked").
如果您想要运行如下面评论中所述的连续循环,您可以通过以下方式进行操作:
static void Main(string[] args)
{
int result;
while (true) // always true, it will always repeat
{
result = GetIntFromConsole("Kod");
while (result != 1946)
{
Console.WriteLine("Locked");
Thread.Sleep(4000); // 4 seconds = 4000 milliseconds
result = GetIntFromConsole("Kod");
}
Console.WriteLine("Unlocked");
Thread.Sleep(4000);
}
}
Run Code Online (Sandbox Code Playgroud)
这个新的while循环将循环,直到你发出一个break;语句,因为它再次从on重新启动逻辑:result = GetIntFromConsole("Kod");你的结果将被重新评估,你可以再次锁定/解锁屏幕几次;)
我希望这是一个充分的解释,我不是一个老师:)