[英]im trying to find biggest negative number in array c#
Running perfect but there is no result only cursor.运行完美但没有结果只有游标。 The expected result is
-15
预期结果是
-15
int[] dizi = { 4, 5, -15, 22, -34, 3, 0, 7, 43, 100 };
int maxNumber = 0;
for (int i = 0; i < dizi.Length; i++)
{
if (dizi[i] < 0)
{
if (maxNumber < dizi[i])
{
maxNumber = dizi[i];
Console.WriteLine(maxNumber);
}
}
}
Console.ReadKey();
You can use Where
and Max
extension methods from System.Linq
namespace:您可以使用
System.Linq
命名空间中的Where
和Max
扩展方法:
var maxNegative = dizi.Where(x => x < 0).Max();
Console.WriteLine(maxNegative);
Max()
will throw exception if there is not any negative number in the collection.如果集合中没有任何负数,
Max()
将抛出异常。 So, you may want to use DefaultIfEmpty
if you want to return 0
instead of any exception:因此,如果您想返回
0
而不是任何异常,您可能需要使用DefaultIfEmpty
:
var maxNegative = dizi.Where(x => x < 0)
.DefaultIfEmpty()
.Max();
Use Max()
to determine your desired value使用
Max()
确定您想要的值
int[] dizi = { 4, 5, -15, 22, -34, 3, 0, 7, 43, 100 };
int result = dizi.Where(x => x < 0).Max();
If you want to keep your code, replace int maxNumber = 0;
如果你想保留你的代码,替换
int maxNumber = 0;
with int maxNumber = int.MinValue;
与
int maxNumber = int.MinValue;
so maxNumber
gets overwritten, otherwise there can't be a bigger negative number compared to 0
所以
maxNumber
被覆盖,否则不能有比0
更大的负数
You can try this:你可以试试这个:
int maxNumber = 0;
for (int i = 0; i < dizi.length; i++) {
if (dizi[i] < 0) {
if (maxNumber == 0 || dizi[i] > maxNumber ) {
maxNumber = dizi[i];
}
}
}
return maxNumber;
If you are looking for non-Linq solution (good old loop):如果您正在寻找非 Linq解决方案(好的旧循环):
int[] dizi = { 4, 5, -15, 22, -34, 3, 0, 7, 43, 100 };
int maxNumber = 0;
foreach (var item in dizi)
if ((item < 0) && (maxNumber == 0 || item > maxNumber))
maxNumber = item;
Console.WriteLine(maxNumber);
Console.ReadKey();
This code either prints out the maximum negative number -15
or 0
if the coolection ( dizi
) doesn't contain any negative numbers此代码或者打印出的最大负数
-15
或0
,如果coolection( dizi
)不包含任何负数
我意识到 maxNumber 是否低于任何数组元素,例如int maxNumber=-100
程序也能工作
Replace your code with this and you will get the correct output用这个替换你的代码,你会得到正确的输出
max=0;
while(i<dizi.Length)
{
if(dizi[i]<max)
max=dizi[i];
i++;
}
if(max!=0)
{
Console.WriteLine(max);
}
else Console.WriteLine("No negative number")
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.