微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决DotNetFiddle 和 Console.ReadLine 的问题导致按 ENTER 键时重新运行

我有一个使用 C# online compiler 和此代码的奇怪场景:

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#
  • 控制台
  • 编译器:.NET 4.7.2
  • 没有 nugets 包
  • 自动运行:否

解决方法

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?