我有一个奇怪的场景,使用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设置如下:
发布于 2021-01-27 04:43:58
一旦您运行了代码,它将作为请求发送到服务器,它将返回结果作为文本显示在接口中。一旦遇到需要用户输入而不是等待输入的点,就会再次发送完整的请求,但这次是使用输入窗口中的信息。然后,在后端,完整的请求再次运行,并自动添加来自用户的输入。
在大多数情况下,这是没有问题的,因为相同的脚本通常产生相同的结果。但是,这是另一种情况,因为您在脚本中添加了一个随机元素。因此,每次输入新数据时,之前发生的一切都会再次运行,并可能产生不同的结果。
https://stackoverflow.com/questions/65918816
复制