10

コードに問題があります。

foreach (DataRow dr in dt_pattern.Rows)
    {
      part = dr["patternString"].ToString();
      if (part != vpart)
      {
        System.Console.WriteLine(part);
        System.Console.WriteLine("Geben Sie bitte für den Abschnitt die AT ein: ");
        temp = System.Console.ReadLine();
        AT = ToDouble(temp);
        dr["AT"] = AT;

        double xATmax = ToDouble(dr["Ampl"].ToString());
        double x = ToDouble(dr["Time"].ToString());

        double yATmax = ToDouble(dr["Ampl"]+1.ToString()) + AT;
        double y = ToDouble(dr["Ampl"].ToString());

        dr["alphaATmin"] = Gradient(x,xATmax,y,yATmax);
        System.Console.WriteLine(dr["alphaATmin"]);
      }
      vpart = part;          
    }

しかし、xATmaxとyATmaxで次の行の値が必要です...誰かが私を助けることができますか?

4

3 に答える 3

25

その場合はforeachを使用しないでください。'forループ'を使用します。あなたのコードは少し混乱していますが、あなたは次のようなことをすることができます...

for (Int32 i = 0; i < dt_pattern.Rows.Count; i++)
{
    double yATmax = ToDouble(dt_pattern.Rows[i+1]["Ampl"].ToString()) + AT;
}

最後の行では「i+1」がないことを考慮に入れる必要があることに注意してください。そのため、それをキャッチするにはifステートメントを使用する必要があります。

于 2009-06-21T16:08:14.807 に答える
5
for (int i=0; i<dt_pattern.Rows.Count; i++)
{
    DataRow dr = dt_pattern.Rows[i];
}

ループ内で、行i + 1を参照できるようになりました(i + 1があると仮定)

于 2009-06-21T16:09:53.123 に答える
0

for (Int32 i = 1; i < dt_pattern.Rows.Count - 1; i++){ double yATmax = ToDouble(dt_pattern.Rows[i]["Ampl"].ToString()) + AT; }

+1の問題を回避したい場合

于 2019-07-07T06:55:53.393 に答える