hello world

          隨筆 - 2, 文章 - 63, 評論 - 0, 引用 - 0
          數據加載中……

          Vector隨記

          今天修改一個點集,是一個Vector類型的變量,point。變量的每一條記錄是一個自定義類coo,也很簡單,只有x,y兩個屬性,都是int型的。
          要實現的功能很簡單,就是把point里的每個x計算一下,x=x*r1/r2。因為在point里邊是不能直接進行運算的,所以要把相應的值讀出來,運算,再插進去——這就是我開始的思路。后來行不通,改成又新建了一個Vector變量,運算完后,查到這個變量后邊,然后在進行一個復制操作。
          更改前的代碼(大致的):

          1 coo one=new coo();
          2 for(int i=0;i<point.size();i++){
          3 one=point.get(i);
          4 one.x=one.x*r1/r2;
          5 point.remove(i);
          6 point.add(i,one);
          7 }

          這段代碼的錯誤很多,簡單分析一下。
          one 并沒有分配內存,所以3行獲得的只是一個地址,4行操作的也只是把地址為i的內容操作了;
          5行邏輯也是錯誤的,因為地址i的數據就是計算后的,把正確的刪掉了又把第i行(就是刪除前的第i+1行),插了進去,弄來弄去,全亂套了。

          下面是正確的代碼正確的代碼:

          for (int i = 0; i < pointV.size(); i++) {
          ??? point_hold = new coordinate();
          ??? point_hold.x = ((coordinate) pointV.get(i)).x;
          ??? point_hold.y = ((coordinate) pointV.get(i)).y;
          ??? point_hold.x = point_hold.x * Reflectance_hold
          ????? / Reflectance;
          ??? pointH.add(point_hold);???
          ?? }
          ??
          ?? pointV.clear();
          ?? pointV=(Vector)pointH.clone();
          ?? pointH.clear();

          其實這段代碼用的是最笨的辦法,不多說了,以后多注意。

          posted on 2008-08-29 12:35 聽風 閱讀(176) 評論(0)  編輯  收藏 所屬分類: JAVA

          主站蜘蛛池模板: 岳阳市| 安塞县| 正宁县| 海林市| 托里县| 隆昌县| 通渭县| 巨鹿县| 平远县| 玛沁县| 和林格尔县| 滦平县| 绍兴市| 广德县| 青田县| 壶关县| 隆尧县| 西乌珠穆沁旗| 兴业县| 高州市| 鹤壁市| 兴化市| 安新县| 吉隆县| 民权县| 如东县| 西畴县| 正蓝旗| 宾川县| 枣强县| 洛扎县| 余姚市| 天全县| 准格尔旗| 雷州市| 清镇市| 弥勒县| 延边| 东乡族自治县| 东阿县| 郓城县|