qq_36769719 2018-11-13 14:39 采纳率: 100%
浏览 771
已采纳

关于迭代的问题,求详细代码

        //第一次迭代
        while (true)
        {
            for (int i = 1; i < count - 2; i++)//迭代count - 2,减去第一个强度值和最后一个强度值
            {
                if (i < count - 1)//极限值count-1
                {
                    double A_Strength = Convert.ToDouble(dt.Rows[i][2]);
                    double X_Strength = Convert.ToDouble(dt.Rows[i - 1][2]);
                    double I_Strength = Convert.ToDouble(dt.Rows[i + 1][2]);
                    double X_WaveLength = Convert.ToDouble(dt.Rows[i][1]);
                    double Avg_Strength = (X_Strength + I_Strength) / 2;

                    if (A_Strength < X_Strength && A_Strength < I_Strength)
                    {
                        Min1_WaveLength.Add(X_WaveLength);
                        Min1_Strength.Add(A_Strength);
                        dt.Rows[i][1] = X_WaveLength; 
                        dt.Rows[i][2] = A_Strength; //替代中间值
                    }
                }
            }
            if (!bGoOn) // bGonOn == FALSE,表示整个for循环里都是符合要求的,退出
                break;
        }
        //第一次以外的迭代
        while (true)
        {

            for (int j = 1; j < count - 2; j++)//迭代count - 2,减去第一个强度值和最后一个强度值
            {
                if (j < count - 1)//极限值count-1
                {
                    double A_Strength = Convert.ToDouble(dt.Rows[j][2]);
                    double X_Strength = Convert.ToDouble(dt.Rows[j - 1][2]);
                    double I_Strength = Convert.ToDouble(dt.Rows[j + 1][2]);
                    double X_WaveLength = Convert.ToDouble(dt.Rows[j][1]);
                    double Avg_Strength = (X_Strength + I_Strength) / 2;
                    if (A_Strength > Avg_Strength)
                    {
                        Minn_WaveLength.Add(X_WaveLength);
                        Minn_Strength.Add(A_Strength);
                        Minn_Strength.Reverse();
                        dt.Rows[j][1] = X_WaveLength; 
                        dt.Rows[j][2] = Avg_Strength; // 取平均替代中间值
                        bGoOn = true; // 表示需要再循环一次
                    }
                }
            }
            if (!bGoOn) // bGonOn == FALSE,表示整个for循环里都是符合要求的,退出
                break;
        }

图片说明

X_Strength字段是需要迭代的值
数据库第一行和最后一行不迭代 第一次迭代: 第二列和第一列,第三列做比较,如果第二列比第一列和第三列小就得到第二列的值 第三列和第二列 第四列做比较 以此类推.............
第二次迭代: 如果第一次迭代的值大于 它左右两个数的平均值就变成左右两个数的平均值
第三次迭代,第四次迭代都是以此类推
一直迭代到不能迭代为止就退出来 每一次迭代的数据都需要保存,我做了一点就不会了。。麻烦求详细代码

  • 写回答

3条回答 默认 最新

  • sd1209286540 2018-11-14 01:38
    关注

    楼主在不在,我有一个方法,直接用for循环做呀。如果判断i%2是否大于0,推测它是比较第i+1行和第i行以及第i+2行值还是判断它左右两个数的平均值就变成左右两个数的平均值
    int sum = 0;
    List list = Lists.newArrayList(1, 2, 3, 4);
    for(int i = 1 ; i < list.size() - 1 ; i++){
    if(i%2 >= 0){//说明是比较第i+1行与第i行以及第i+2行的大小
    if(list.get(i+1) < list.get(i) && list.get(i+1) < list.get(i+2)){
    sum = list.get(i+1);
    }
    }else{//判断第i次迭代的值大于 它左右两个数的平均值就变成左右两个数的平均值
    }
    }

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 孟德尔随机化结果不一致
  • ¥20 求用stm32f103c6t6在lcd1206上显示Door is open和password:
  • ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
  • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
  • ¥15 谁有desed数据集呀
  • ¥20 手写数字识别运行c仿真时,程序报错错误代码sim211-100
  • ¥15 关于#hadoop#的问题
  • ¥15 (标签-Python|关键词-socket)
  • ¥15 keil里为什么main.c定义的函数在it.c调用不了
  • ¥50 切换TabTip键盘的输入法