C# 试图从给定的输入中找出最大的负值和最小的正值
我正在尝试建立一个算法,输入是10个数字(正数和负数),输出是最小的正数和最大的负数。 对于最小的肯定,我得到了正确的答案,但对于最大的否定,我得不到正确的答案。 插入代码和输出C# 试图从给定的输入中找出最大的负值和最小的正值,c#,C#,我正在尝试建立一个算法,输入是10个数字(正数和负数),输出是最小的正数和最大的负数。 对于最小的肯定,我得到了正确的答案,但对于最大的否定,我得不到正确的答案。 插入代码和输出 if (num>negMax) 这种情况下有一个错误。由于初始negMax值为0,因此不会有负数满足条件,因此negMax值将永远不会更新 这种情况下有一个错误。由于您的初始negMax值为0,没有负数将满足条件,因此negMax值将永远不会更新。您正在将negMax初始化为0 没有大于0的负数 根据您想要
if (num>negMax)
这种情况下有一个错误。由于初始negMax值为0,因此不会有负数满足条件,因此negMax值将永远不会更新
这种情况下有一个错误。由于您的初始negMax值为0,没有负数将满足条件,因此negMax值将永远不会更新。您正在将
negMax
初始化为0
没有大于0的负数
根据您想要完成的具体任务,您可以执行以下操作之一:
- 将
初始化为negMax
int.MinValue
- 修改将新值分配给
negMax
negMax
的条件
由于您通常不将0视为负数(如果将其视为负数,则可以使用任何正数来初始化negMax
),因此如果输出结果为0,您就会知道没有负数
要对posMin
执行相同的操作,必须将其初始化为小于0的值,并相应地调整if条件,以便为该变量赋值
或者,您也可以将negMax
和posMin
声明为int?
s,并检查是否为null,而不是=0
如果选择这种方式,您可以检查变量和输出的值,例如,没有输入负数或正数,而不是输出您选择的占位符。您正在将
negMax
初始化为0
没有大于0的负数
根据您想要完成的具体任务,您可以执行以下操作之一:
- 将
初始化为negMax
int.MinValue
- 修改将新值分配给
negMax
negMax
的条件
由于您通常不将0视为负数(如果将其视为负数,则可以使用任何正数来初始化negMax
),因此如果输出结果为0,您就会知道没有负数
要对posMin
执行相同的操作,必须将其初始化为小于0的值,并相应地调整if条件,以便为该变量赋值
或者,您也可以将negMax
和posMin
声明为int?
s,并检查是否为null,而不是=0
如果选择这种方式,您可以检查变量和输出的值,例如,没有输入负数或正数,而不是输出您选择的占位符。如果您有一个集合,例如,
int[]numbers
,您可以在Linq的帮助下查询它:
让我们打印出这些值:
Console.WriteLine(
$"Biggest negative: {(biggestNegative == 0 ? "???" : biggestNegative.ToString())}");
Console.WriteLine(
$"Smallest positive: {(smallestPositive == 0 ? "???" : smallestPositive.ToString())}");
如果您有一个集合,比如,
int[]numbers
,您可以借助Linq查询它:
让我们打印出这些值:
Console.WriteLine(
$"Biggest negative: {(biggestNegative == 0 ? "???" : biggestNegative.ToString())}");
Console.WriteLine(
$"Smallest positive: {(smallestPositive == 0 ? "???" : smallestPositive.ToString())}");
请将代码添加到问题中,不是作为图像,而是作为文本。您应该复制粘贴代码并将其输出到问题中。格式很好。这样问题就包含了所有没有外部链接的内容,人们可以复制粘贴它。欢迎使用So。在这里复制代码比链接到显示代码的图像要好。请看,您可以尝试Linq:
intbiggestnegative=numbers.Where(x=>x<0.Max();int smallestPositive=numbers.Where(x=>x>0).Min()
@DmitryBychenko如果集合中没有负数,这不会引发异常吗?请将代码添加到问题中,而不是作为图像,而是作为文本。您应该复制粘贴代码并输出到问题中。格式很好。这样问题就包含了所有没有外部链接的内容,人们可以复制粘贴它。欢迎使用So。在这里复制代码比链接到显示代码的图像要好。请看,您可以尝试Linq:intbiggestnegative=numbers.Where(x=>x<0.Max();int smallestPositive=numbers.Where(x=>x>0).Min()
@DmitryBychenko如果集合中没有负数,这不会引发异常吗?那么这不是条件,而是起始值。它应该是int.MinValue。另外:这里完全忽略的是,如果没有负元素,那不是条件,而是起始值。它应该是int.MinValue。另外:这里完全忽略的是,如果没有负面因素会怎么样?这就是它不起作用的原因。你将如何解决这个问题?@Fildor这很难回答,因为它没有具体说明在没有负数、正数甚至没有数字的情况下应该发生什么。你说得对,我应该补充一点,这就是为什么它不起作用。你将如何解决这个问题?@Fildor这很难回答,因为它没有指定在没有否定的情况下应该发生什么
Console.WriteLine(
$"Biggest negative: {(biggestNegative == 0 ? "???" : biggestNegative.ToString())}");
Console.WriteLine(
$"Smallest positive: {(smallestPositive == 0 ? "???" : smallestPositive.ToString())}");