[英]Random minvalue cannot be greater than maxvalue
我正在嘗試制作一個基於控制台的應用程序,其中程序將從用戶提供的范圍中減去兩個隨機數,但是當我輸入值時,它會給我一個“隨機最小值不能大於最大值”錯誤
這是我的代碼
static void subtract()
{
bool tryagain = true;
while (tryagain == true)
{
Console.WriteLine("Choose a range of numbers");
Console.Write("First Value: ");
int firstval = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("First value: " + firstval);
Console.WriteLine("Second Value: ");
int secondval = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Second value: " + secondval);
Console.WriteLine(firstval + secondval);
Random rnd = new Random();
int firstrndval = rnd.Next(firstval, secondval); //this line is throwing the error
int secondrndval = rnd.Next(firstval, secondval);
Console.WriteLine("What is " + firstrndval + "-" + secondrndval);
int potans;
potans = Convert.ToInt32(Console.ReadLine());
int ans = firstrndval - secondrndval;
if (ans != potans)
{
Console.WriteLine("Wrong Answer");
}
else
{
Console.WriteLine("Correct Answer");
}
Console.WriteLine("Would you like to try again Y/N");
string potbol = Console.ReadLine();
potbol = potbol.ToUpper();
if (potbol == "N")
{
tryagain = false;
}
}
}
如果 firstval 小於 secondval,我嘗試切換值,但它不起作用,我嘗試了元組方法和三變量方法,但它似乎對我不起作用,可能是因為它在 if-else 語句中。我是C# 相當新,似乎沒有解決這個問題。
你有兩個選擇
第一:如果第一個數字大於第二個,像這樣交換它們
if (firstval > secondval)
{
int temp = firstval;
firstval = secondval;
secondval = temp;
}
這將確保 firstVal 永遠是更大的
第二個解決方案:像這樣使用 Math.Min() 和 Math.Max()函數
int firstrndval = rnd.Next(Math.Min(firstval, secondval), Math.Max(firstval, secondval));
int secondrndval = rnd.Next(Math.Min(firstval, secondval), Math.Max(firstval, secondval));
這將確保兩個變量的最小值首先是 firstVal 或 SecondVal,並且對於兩個變量的 maxmimum 值都是相同的
首先,您必須找到兩者中較小的數字和較大的數字:
int smaller = Math.Min(firstval, secondval);
int biggest = Math.Max(firstval, secondval);
int firstrndval = rnd.Next(smaller, biggest + 1);
int secondrndval = rnd.Next(smaller, biggest + 1);
您必須將 +1 放在第二個參數上,因為第二個參數是獨占的。 這意味着,如果您輸入 rnd.Next(1,10),它只會返回 {1,2,3,4,5,6,7,8,9} 中的數字(絕不會返回 10)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.