前臂按升序排列

本文关键字:排列 升序 | 更新日期: 2023-09-27 18:27:34

我正在尝试检查此数组中的升序但不确定如何使用前臂

 foreach (double d in dSize)
        {
            if (dSize.ToString() != null)
            {
                double dSize1;
                string str1 = dSize.ToString();
                bool success1 = double.TryParse(str1, out dSize1);
                if ( dSize < 0.0)
                {
                    errMsg1 = " data grid should contain number >= 0";
                }
                //else
                //{
                //    errMsg1 = " data grid must be entered";
                //}
            }

                *if (inputs.dSize[rowCount] <= inputs.dSize[rowCount - 1])
                {
                    errMsg = "value in row " + (rowCount + 1) + " should be greater than the value in row " + rowCount;
                }
            }*
            swRpt.WriteLine(errMsg);
        }

我已经用for循环完成了第二部分。想将其更改为foreach

前臂按升序排列

您只需要从一次迭代到下一次迭代记住上一个值。使用foreach(与原始迭代器相反)的问题是,您需要对第一个值使用特殊情况:

Double lastDouble = null;
foreach(double d in dSize) {
    if ((lastDouble != null) && (lastDouble > d)) {
        errMsg = "value out of sequence";
        break;
    }
    lastDouble = d;
}

但是您已经丢失了错误的行号。您也可以从第一个条目开始设置最后一个值,然后使用LINQ 跳过一个值

double lastDouble = dSize.First();
foreach(double d in dSize.Skip(1)) {
    if (lastDouble > d) {
        errMsg = "value out of sequence";
        break;
    }
    lastDouble = d;
}

为什么不。。。

  for(int i = dSize.Length-1; i>=0;i--)
  {
      double d = dSize[i];
      ...
      ...
      ...
  }