从包含空格的单行中读取字符,而不是从新行中读取字符



在C#中,我正试图解决一个问题:编写一个程序,检查奇数元素的乘积是否等于偶数元素的乘积。

剩下的只有:在第二行中,您将收到由空格分隔的N个数字。我无法让它工作。我试过斯普利特,但它总是坏掉。有人能帮忙吗?

示例:

输入
52 1 1 6 3
输出

是6

static void Main(string[] args)
{
long N = long.Parse(Console.ReadLine());
long[] array = new long[N];
long ODD = 1;
long EVEN = 1;
for (int i = 0; i < N; i++)
{
array[i] = int.Parse(Console.ReadLine());
if ((i + 1) % 2 == 0)
{
EVEN *= array[i];
}
else
{
ODD *= array[i];
}
}
if (EVEN == ODD)
{
Console.WriteLine("yes" +  " " +
ODD);
}
else
{
Console.WriteLine("no" + " " + ODD + " " + EVEN);
}
}

读取控制台输入并将其保存到string数组中,
然后将每个数组元素转换为long并应用OddEven逻辑,如下所示:

static void Main(string[] args)
{
string input = Console.ReadLine();
string[] inputArray = input.Split(' ');
long element;
long odd = 1;
long even = 1;
foreach (var i in inputArray)
{
element = long.Parse(i);
if (element % 2 == 0)
{
even *= element;
}
else
{
odd *= element;
}
}
Console.WriteLine("nOdd product = " + odd + ", Even product = " + even);
if (odd == even)
{
Console.WriteLine("ODD == EVEN n");
Console.WriteLine("Yes" + " " + odd);
}
else
{
Console.WriteLine("ODD != EVEN n");
Console.WriteLine("No" + " " + odd + " " + even);
}
Console.ReadKey();
}
long[] nums = input.Split(' ').Select(x => long.Parse(x))..ToArray(); //split numbers by space and cast them as int
int oddProduct = 1, evenProduct = 1; // initial values
foreach(long x in nums.Where(a => a%2 == 1))
oddProduct *= x;    // multiply odd ones
foreach(long x in nums.Where(a => a%2 == 0))
evenProduct *= x;   // multiply even ones

最新更新