110.66008217, 21.56141433
110.65471817, 21.55602517
110.64344033, 21.54570050
110.63638833, 21.54144150
110.62926650, 21.53747900
110.62183617, 21.53321233
          ……
110.60921567, 21.52413833
110.60509683, 21.52104433
110.60017567, 21.51747633以上为一组经纬度数据,一行代表一个地点,包含经纬度,用逗号隔开。比如第一个地点的经度为lon1=110.66008217,纬度为lat1=21.56141433,第二个地点的经度为lon2=110.65471817,纬度为lat2=21.55602517,依次类推。
现在想计算总距离,需要先计算各相邻两个地点的距离,再进行累加。而计算相邻两个地点的距离,需要用到相邻两行的四个数据。
foreach (string s in richTextBox1.Lines)
                {
                    string[] lonlat0 = s.Split(',');
                    string strlon0 = lonlat0[0];
                    string strlat0 = lonlat0[1];
                    double lon0 = Convert.ToDouble(strlon0);
                    double lat0 = Convert.ToDouble(strlat0);
这样只是取出了一行的两个数据,如何再取出下一行的两个数据?
求教高手,谢谢!

解决方案 »

  1.   

    你是想在一次foreach里有两行的数据进行操作吗?
      

  2.   

    private void button1_Click(object sender, EventArgs e)
            {
                string s = richTextBox1.Text;
                string[] str = s.Split(',','\n');
                double totalDistance = 0;
                for (int i = 0; i < str.Rank; i = i + 2)
                {
                    string strlon0 = str[i];
                    string strlat0 = str[i + 1];
                    string strlon1 = str[i + 2];
                    string strlat1 = str[i + 3];
                    double lon0 = Convert.ToDouble(strlon0);
                    double lat0 = Convert.ToDouble(strlat0);
                    double lon1 = Convert.ToDouble(strlon1);
                    double lat1 = Convert.ToDouble(strlat1);
                    double lat = (lat1 - lat0) * 111199.233;
                    double lon = (lon1 - lon0) * 111199.233 * System.Math.Cos((lat0 + lat1) / 2.0);
                    double dbDistance = System.Math.Sqrt(System.Math.Pow(lon, 2) + System.Math.Pow(lat, 2));
                    totalDistance += dbDistance;
                }
                label1.Text = totalDistance.ToString();
            }为什么我的for语句不循环?
      

  3.   

    1.Rank应该是指维数,str是1,还能循环?,所以应该改成str.Length
    2.你这样i肯定溢出,如果i=str.Length-1,那i+1,i+2,i+3都成多少了,所以i<str.Length-3
      

  4.   


    rank是秩,str是一维矩阵,秩就是1,这个循环根本就进不去。