嗨,我有问题。我的代码应该显示随机数并将所有奇数加在一起,但我的问题是它只生成一堆0#。如果有人愿意帮助我,我会非常感激。
我写了很多类似的代码,但这是唯一一个只生成0的代码,我不知道它有什么问题。
int[,] A = new int[5, 7];
Random rand = new Random();
private void SumOdd(int[,] array)
{
int sum = 0;
int rows = array.GetLength(0);
int cols = array.GetLength(1);
for (int i = 0; i < rows; i++)
{
for (int j = 0; j < cols; j++)
{
if (sum % 2 != 0)
{
array[i, j] = rand.Next(-100, 100);
sum += array[i, j];
}
richTextBox1.AppendText(array[i, j] + " ");
}
}
richTextBox1.AppendText("The Sum of all Odd is: "+ sum.ToString());
}
答案 0 :(得分:0)
sum = 0;
if (sum % 2 != 0)
{
// never reaches here
// sum % 2 is always 0 in your case
}
答案 1 :(得分:0)
我看到一个&#34;奇怪&#34;事情:首先,您使用sum
初始化0
。到现在为止还挺好。然后你用sum % 2 != 0
测试它是否奇怪。由于sum
为零,因此该标准永远不会成立,因此它永远不会进入将改变总和的范围内。
我认为你想测试奇数的新随机数,所以试试这个:
int[,] A = new int[5, 7];
Random rand = new Random();
private void SumOdd(int[,] array)
{
int sum = 0;
int rows = array.GetLength(0);
int cols = array.GetLength(1);
for (int i = 0; i < rows; i++)
{
for (int j = 0; j < cols; j++)
{
int value = rand.Next(-100, 100); // Create a new random number.
array[i, j] = value; // Store it in the array.
richTextBox1.AppendText(value + " "); // Display it in the textbox.
if (value % 2 != 0) // Test if it is odd.
sum += value; // If so... add it to the sum.
}
}
richTextBox1.AppendText("The Sum of all Odd is: "+ sum.ToString());
}
答案 2 :(得分:0)
if (sum % 2 != 0)
当代码到达此点时,sum最初为0.因此,在计算时,0/2保持为0. if中的块仅在余数不为0时执行。
放
array[i, j] = rand.Next(-100, 100);
在if之外,如果你想在和之前随机化数字值。
另外,你说要添加奇数;好吧,这会检查总和,而不是随机生成的数字。只是一个想法。
答案 3 :(得分:0)
我使用控制台应用程序构建它并且效果很好
static Random rand;
static void Main(string[] args)
{
int[,] A = new int[5, 7];
rand = new Random();
SumOdd(ref A);
Console.ReadLine();
}
private static void SumOdd(ref int[,] array)
{
int sum = 0;
int rows = array.GetLength(0);
int cols = array.GetLength(1);
for (int i = 0; i < rows; i++)
{
for (int j = 0; j < cols; j++)
{
array[i, j] = rand.Next(-100, 100);
if (array[i,j] % 2 != 0)
{
Console.WriteLine(array[i, j]);
sum += array[i, j];
}
Console.WriteLine(array[i, j] + " ");
}
}
Console.WriteLine("The Sum of all Odd is: " + sum.ToString());
}