该问题要求代码进行1000次迭代,它必须允许0-100000的整数,并显示在迭代过程中生成了多少个奇数,然后显示生成的最高数字和最低数字。我的代码的第一部分工作并显示了生成了多少个奇数,但是我无法弄清楚如何捕获/编辑在代码运行时生成的最小和最大的数。
我尝试了许多不同的方法,包括while循环和条件条件。我已经将它们放置在我的程序中,但是我被卡住了。我知道问题在于randNum进入变量并在每次迭代中都保持不变,而不会回到零。(当我运行代码时,smallNum和LargeNum显示为零。)
到目前为止我的工作在这里
using System;
using System.Windows.Forms;
namespace BissonnetteMessageBox
{
class Program
{
static void Main(string[] args)
{
int oddNumCount = 0;
int smallNum = 0;
int largeNum = 0;
Random randNum = new Random();
for (int i = 0; i < 1000; i++)
{
int num = randNum.Next(100000);
int remain = num % 2;
if (remain != 0)
{
oddNumCount++;
}
if (num < smallNum)
{
num = smallNum;
}
else if (num > largeNum)
{
num = largeNum;
}
}
MessageBox.Show("the Number of odd numbers generated: " + oddNumCount +
"\nSmallest number was: " + smallNum +
"\nLargerst number was: "+ largeNum , "random number generation results");
}
}
}
这是我运行程序时的结果:
答案 0 :(得分:2)
“ num = smallNum;”行和“ num = largeNum;”错了。它们应该是“ smallNum = num;”和“ largeNum = num;”。这是因为“ =”右侧的变量(或常量,表达式)会覆盖左侧的变量。它不像数学中那样可以翻转。 这是正确的代码:
using System;
using System.Windows.Forms;
namespace BissonnetteMessageBox
{
internal class Program
{
private static void Main(string[] args)
{
int oddNumCount = 0;
int smallNum = 0;
int largeNum = 0;
Random randNum = new Random();
for (int i = 0; i < 1000; i++)
{
int num = randNum.Next(100000);
int remain = num % 2;
if (remain != 0)
{
oddNumCount++;
}
if (num < smallNum)
{
smallNum = num;
}
else if (num > largeNum)
{
largeNum = num;
}
}
MessageBox.Show("the Number of odd numbers generated: " + oddNumCount +
"\nSmallest number was: " + smallNum +
"\nLargerst number was: " + largeNum, "random number generation results");
}
}
}
答案 1 :(得分:1)
许多人指出了代码本身的两个主要问题。
在您学习编程时,我想谈一谈如何解决这样的问题。
好像您在Visual Studio中,使用C#编程。好吧,好消息是,Visual Studio使得您在逐步执行程序时可以很容易地看到正在发生的事情。您可以在代码中设置一个断点,以便当程序到达该行时,它会停止-高亮显示该行并让您查看发生了什么。从那里,您可以前进代码行,观察值的变化。
以下是一些有用的入门指南:
这将是不可思议的今后的价值。因为,老实说,如果您发现每次遇到任何障碍时都必须在线发布问题,就不会非常喜欢编程。能够找出障碍,将使您的生活远更愉快:-)