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 iOS 自定义输入法-第三方输入法
  • ¥15 很想要一个很好的答案或提示
  • ¥15 扫描项目中发现AndroidOS.Agent、Android/SmsThief.LI!tr
  • ¥15 怀疑手机被监控,请问怎么解决和防止
  • ¥15 Qt下使用tcp获取数据的详细操作
  • ¥15 idea右下角设置编码是灰色的
  • ¥15 全志H618ROM新增分区
  • ¥15 在grasshopper里DrawViewportWires更改预览后,禁用电池仍然显示
  • ¥15 NAO机器人的录音程序保存问题
  • ¥15 C#读写EXCEL文件,不同编译