C#-循环中语句的定位

C#-循环中语句的定位,c#,C#,有一个赋值,“编写一个程序,生成1000个介于0和100000之间的随机数。显示生成的奇数值以及最小值和最大值。” 编写代码时,如果其中一个随机数出现奇数/>max,则在代码中包含修改变量max/min/odd的额外语句/ 所有这些都已经写好了,但我似乎找不到合适的位置来使用max/min/odd语句 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System

有一个赋值,“编写一个程序,生成1000个介于0和100000之间的随机数。显示生成的奇数值以及最小值和最大值。”

编写代码时,如果其中一个随机数出现奇数/>max,则在代码中包含修改变量max/min/odd的额外语句/ 所有这些都已经写好了,但我似乎找不到合适的位置来使用max/min/odd语句

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace RandomNumberFacts
{
    class RandomNumberFacts
    {
        static void Main()
        {
        bool moreData = true;
        Random numb = new Random();
        int s = numb.Next(100000);
        int max = -1;
        int min = 100001;
        int odd = 0;
        int counter = 0;
        while (moreData)
        {

            counter++;
            if (counter >= 1000)
            {
                moreData = false;
            }
            else
            {
                s = numb.Next(100000);
            }
            if (s < min)
                s = min;
            if (s > max)
                s = max;
            if (s % 2 == 1)
                odd++;
        }
        Console.WriteLine("Amount of odd numbers in set is:"); 
        Console.WriteLine(odd);
        Console.WriteLine("Largest number in set is:");
        Console.WriteLine(max);
        Console.WriteLine("Smallest number in set is:");
        Console.WriteLine(min);
        Console.ReadKey();


    }
}
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
使用System.Threading.Tasks;
使用System.Windows.Forms;
命名空间随机数行为
{
类随机数
{
静态void Main()
{
bool-moreData=true;
随机数=新随机数();
int s=下一个(100000);
int max=-1;
int min=100001;
int奇数=0;
int计数器=0;
while(更多数据)
{
计数器++;
如果(计数器>=1000)
{
moreData=false;
}
其他的
{
s=麻木。下一个(100000);
}
如果(s最大值)
s=最大值;
如果(s%2==1)
奇数++;
}
Console.WriteLine(“集合中奇数的数量为:”);
控制台写入线(奇数);
Console.WriteLine(“集合中最大的数字是:”);
控制台写入线(最大值);
WriteLine(“集合中最小的数字是:”);
控制台写入线(最小值);
Console.ReadKey();
}
}

}您的逻辑错误:当您找到一个较小的数字时,您应该更改当前的
min
,而不是新的数字。即

if (s < min) {
    min = s; // Not s = min;
}
if(s

max
也是如此。您的
odd
计数器很好。

这里有一种更简洁的方法来编写while循环

    Random numb = new Random();
    int s = numb.Next(100000);
    int max = -1;
    int min = 100001;
    int odd = 0;
    int counter = 0;
    while (true)
    {
        counter++;
        s = numb.Next(100000);
        min = (s < min) ? s : min;
        max = (s > max) ? s : max;
        if((s % 2) = 1) odd++;
        if (counter >= 1000)break;
    }
Random numb=new Random();
int s=下一个(100000);
int max=-1;
int min=100001;
int奇数=0;
int计数器=0;
while(true)
{
计数器++;
s=麻木。下一个(100000);
最小值=(smax)?s:max;
如果((s%2)=1)奇数++;
如果(计数器>=1000)中断;
}

在测试了min/max之后,您已经反转了赋值。您需要
min=s
max=s
不是s=max,而是max=sA for循环,而不是while循环更容易读取。此外,在循环的最后一次迭代中没有设置sloop@Measuring:“0到100000之间”所以不清楚100000是不是一个有效的结果。因此,不清楚0是否是一个有效的结果。好吧,在修正了反转后就可以了,否则它将始终为零,因为s是max@Steve:因为代码错误地认为
-1
是偶数。。。虽然那也没关系,在完成作业后。谢谢。我已经完成了反转并移动了WriteLine语句以允许它同时运行(我意识到ReadKey要求我按Enter 1000次)。您的循环只执行999,而不是1000次简单的操作,将中断移动到while循环的末尾,但感谢Les,捕捉得很好