DotNetFiddle和Console的问题.按ENTER键时导致重新运行的ReadLine &g



我有一个奇怪的场景,使用c#在线编译器与以下代码:

int randomNumber;
int guess;
int countGuess;
bool correctGuess = false;
bool alreadyCalled = false;
int lastGuess;
public void Main()
{
if(!alreadyCalled)
{
RandomNumberGenerator();
alreadyCalled = true;
}
GuessWhatNumber();
}
private void GuessWhatNumber()
{
while(!correctGuess)
{
Console.WriteLine("Guess the number : ");
guess = Convert.ToInt32(Console.ReadLine());

if(guess > randomNumber)
{
Console.WriteLine("Too High");
correctGuess = false;
}
else if(guess < randomNumber)
{
Console.WriteLine("Too Small");
correctGuess = false;
}
else    
{
Console.WriteLine("Correct!");
correctGuess = true;
countGuess = 0;
Environment.Exit(0);
}

if(lastGuess != guess)
{
countGuess+=1;
Console.WriteLine("Count of Guess : " + countGuess);
}
else
{
Console.WriteLine("Count of Guess is Still: " + countGuess);
}
lastGuess = guess;
}
}
private void RandomNumberGenerator()
{
Random rand = new Random();
randomNumber = rand.Next(50);
Console.WriteLine("Number To Guess : " + randomNumber); 
}

Random Number Generator方法必须只被调用一次,但是在在线编译器上,它会不断地调用和调用该方法。我哪里做错了?还是编译器的问题?

Dotnetfiddle.net设置为:

c#
  • <
  • 控制台/gh>编译器:.NET 4.7.2
  • No nugets packages
  • 自动运行:没有

运行代码后,它将作为请求发送到服务器,并且它将以文本形式返回结果以显示在界面中。一旦它遇到需要用户输入而不是等待输入的点,就会再次发送完整的请求,但这次使用来自输入窗口的信息。然后,在后台,完整的请求再次运行,并自动添加来自用户的输入。

在大多数情况下,这没有问题,因为相同的脚本通常产生相同的结果。然而,这是一个不同的情况,因为您在脚本中添加了一个随机元素。因此,每次输入新数据时,之前发生的所有事情都会重新运行,并且可能产生不同的结果。

最新更新