C# 我试图找到数组c中最大的负数#

C# 我试图找到数组c中最大的负数#,c#,arrays,negative-number,C#,Arrays,Negative Number,运行完美,但没有结果只有光标。预期结果为-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

运行完美,但没有结果只有光标。预期结果为
-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();
int[]dizi={4,5,-15,22,-34,3,0,7,43,100};
int maxNumber=0;
for(int i=0;i
您可以使用
系统中的
Where
Max
扩展方法。Linq
命名空间:

var maxNegative = dizi.Where(x => x < 0).Max(); 
Console.WriteLine(maxNegative);
使用
Max()
确定所需的值

int[] dizi = { 4, 5, -15, 22, -34, 3, 0, 7, 43, 100 };
int result = dizi.Where(x => x < 0).Max();
int[]dizi={4,5,-15,22,-34,3,0,7,43,100};
int result=dizi.Where(x=>x<0.Max();

如果要保留代码,请替换
int maxNumber=0带有
int maxNumber=int.MinValue
因此
maxNumber
会被覆盖,否则与
0

相比,不会有更大的负数。您可以尝试以下操作:

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;
int maxNumber=0;
for(int i=0;imaxNumber){
maxNumber=dizi[i];
}
}
}
返回maxNumber;

如果您正在寻找非Linq解决方案(良好的旧循环):

int[]dizi={4,5,-15,22,-34,3,0,7,43,100};
int maxNumber=0;
foreach(dizi中的var项目)
如果((项目<0)和&(maxNumber==0 | |项目>maxNumber))
maxNumber=项目;
控制台写入线(maxNumber);
Console.ReadKey();

该代码要么打印出最大负数
-15
,要么打印出
0
,如果该操作(
dizi
)不包含任何负数

我知道如果maxNumber低于任何数组元素,例如
int maxNumber=-100
程序也可以工作

用这个替换代码,您将获得正确的输出

   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")
 }
max=0;

while(ii)如果没有结果,它是如何完美运行的?
if(maxNumber
如果maxNumber是0,它将永远不会小于负数。使用调试器。逐行检查。你会注意到@Dennis_E所说的问题。应该是
if(maxNumber>dizi[i])
我赞同萨米的说法:如果你想真正了解它的错误,请在调试器中进行单步调试。没有更好的方法来理解你的代码。这个问题定义模糊,所以我假设有负数thx@Rahul Tripathi,一旦我加上'maxNumber==0 | |',我就对了result@Anektarcı传说事实上,这不是big deal。但是,当然最好在一开始就编写自己的代码,而不是在
.DefaultIfEmpty()
中使用Linq方法+1。极端情况(在此特定代码中没有负数)值得考虑。
    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();
   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")
 }