<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-60  評(píng)論-117  文章-0  trackbacks-0
       我用的eclipse版本是3.1.1的英文版。假設(shè)源程序是這樣:

    package c08;

    publicclass StrSortVector {

           private Vector v = new Vector();

           Compare compare = new Compare();

           class Compare {

                  publicboolean lessThan(Object l, Object r) {

                         return ((String) l).toLowerCase().compareTo(

                                       ((String) r).toLowerCase()) < 0;

                  }

                  publicboolean lessThanOrEqual(Object l, Object r) {

                         return ((String) l).toLowerCase().compareTo(

                                       ((String) r).toLowerCase()) <= 0;

                  }

           }

           privatebooleansorted = false;

           publicvoid addElement(String s) {

                  v.addElement(s);

                  sorted = false;

           }

           public String elementAt(int index) {

                  if (!sorted) {

                         sort();

                         sorted = true;

                  }

                  return (String) v.elementAt(index);

           }

           public Enumeration elements() {

                  if (!sorted) {

                         sort();

                         sorted = true;

                  }

                  returnv.elements();

           }

           publicvoid sort() {

                  quickSort(0, v.size() - 1);

                  System.out.println("size=" + (v.size() - 1));

           }

           privatevoid quickSort(int left, int right) {

                  if (right > left) {

                         Object o1 = elementAt(right);

                         int i = left - 1;

                         System.out.println("i=" + i);

                         int j = right;

                         System.out.println("j=" + j);

                         while (true) {

                                while (compare.lessThan(elementAt(++i), o1))

                                       ;

                                while (j > 0)

                                       if (compare.lessThanOrEqual(elementAt(--j), o1))

                                              break; // out of while

                                if (i >= j)

                                       break;

                                swap(i, j);

                         }

                         swap(i, right);

                         quickSort(left, i - 1);

                         quickSort(i + 1, right);

                  }

           }

           privatevoid swap(int loc1, int loc2) {

                  Object tmp = elementAt(loc1);

                  v.setElementAt(elementAt(loc2), loc1);

                  v.setElementAt(tmp, loc2);

           }

           // Test it:

           publicstaticvoid main(String[] args) {

                  StrSortVector sv = new StrSortVector();

                  sv.addElement("d");

                  sv.addElement("A");

                  sv.addElement("C");

                  sv.addElement("c");

                  sv.addElement("b");

                  sv.addElement("B");

                  sv.addElement("D");

                  sv.addElement("a");

                  Enumeration e = sv.elements();

                  while (e.hasMoreElements())

                         e.nextElement();

           }

    }// /:~

    為了容易看,所以先要ctrl+shift+f格式化一下。有紅叉號(hào),懷疑有什么沒(méi)導(dǎo)進(jìn)來(lái),于是ctrl+shift+o來(lái)import 一下。值得一提的是ctrl+shift+o執(zhí)行的是組織導(dǎo)入( organize import),就是說(shuō)缺少導(dǎo)入,可以自動(dòng)添加;有無(wú)用導(dǎo)入,可以自動(dòng)刪除。

    好了,編譯通過(guò)了。

    代碼中的方法有點(diǎn)亂是吧。試著來(lái)將代碼整理一下,鼠標(biāo)放在代碼上,

    首先我想進(jìn)行代碼重構(gòu)。

    將下面這段代碼選中:

    class Compare {

                  publicboolean lessThan(Object l, Object r) {

                         return ((String) l).toLowerCase().compareTo(

                                       ((String) r).toLowerCase()) < 0;

                  }

                  publicboolean lessThanOrEqual(Object l, Object r) {

                         return ((String) l).toLowerCase().compareTo(

                                       ((String) r).toLowerCase()) <= 0;

                  }

          }

       

    右鍵點(diǎn)擊refactor - -Convert Member Type To Top Level。在彈出的對(duì)話框里輸入抽出的類的名稱Compare,OK即可。

    我還想將類Compare中的方法中提取出接口,于是:將要提取的方法選中,右鍵單擊extract Interface。輸入接口名ICompare,在要提取的方法名上打勾,OK.

    鼠標(biāo)放在代碼上,右鍵點(diǎn)擊run as Java Application .運(yùn)行報(bào)錯(cuò)。錯(cuò)誤信息如下:Exception in thread "main" java.lang.StackOverflowError

           at c08.StrSortVector.sort(StrSortVector.java:35)

           at c08.StrSortVector.quickSort(StrSortVector.java:41)

       at c08.StrSortVector.elementAt(StrSortVector.java:20)

    點(diǎn)擊控制臺(tái)上的(StrSortVector.java:35)鏈接,找到出錯(cuò)的地方。

           public Enumeration elements() {

                  if (!sorted) {

                         sort();

                         sorted = true;

                  }

                  returnv.elements();

          }

    這個(gè)方法里的quickSort(0, v.size() - 1);出錯(cuò)了。Ctrl+/將其注釋掉。運(yùn)行通過(guò)了,可是沒(méi)有結(jié)果。將程序改一下,將結(jié)果打印:main函數(shù)里最后一句e.nextElement();前加Sy然后按alt+/,可以自動(dòng)補(bǔ)全為System然后打 .   最終打出System.out.println(e.nextElement());

    運(yùn)行一下,發(fā)現(xiàn)結(jié)果只是把數(shù)據(jù)原樣輸出。這個(gè)類是要實(shí)現(xiàn)排序的。所以alt+返回歷史紀(jì)錄。把注釋掉內(nèi)容再按一次alt+/打開(kāi)。

    既然quickSort(0, v.size() - 1);這個(gè)方法有錯(cuò)誤,就選中quickSort按住alt鍵轉(zhuǎn)到此方法,在錯(cuò)誤提示里說(shuō)(StrSortVector.java:41)有錯(cuò),這正好是在quickSort方法中,看來(lái)是同一個(gè)錯(cuò)誤,此行Object o1 = elementAt(right);又調(diào)用一個(gè)方法。選中elementAt按住ctrl轉(zhuǎn)到這個(gè)方法中,StrSortVector.java:20

    正好在此方法中,看來(lái)提示根本都是一個(gè)錯(cuò)誤。20sort();有錯(cuò),將其注釋掉。運(yùn)行通過(guò),結(jié)果按字母排序完成。

    其實(shí)一般喜歡用debug來(lái)查找錯(cuò)誤。但當(dāng)把debug關(guān)了,就會(huì)找不到代碼文件原來(lái)的位置。此時(shí)可以在代碼上右健點(diǎn)擊Show In - -navigator。就可以定位此文件了。

    posted on 2008-03-01 11:42 靜兒 閱讀(2642) 評(píng)論(4)  編輯  收藏 所屬分類: 技術(shù)

    評(píng)論:
    # re: eclipse使用實(shí)例 2008-03-02 14:50 | xifu
    值得學(xué)習(xí)的文章,強(qiáng)悍的樓主  回復(fù)  更多評(píng)論
      
    # re: eclipse使用實(shí)例 2008-03-03 12:38 | 靜兒
    @xifu
    eclipse對(duì)java程序來(lái)說(shuō)一個(gè)功能非常強(qiáng)大的工具。想用一個(gè)簡(jiǎn)單的程序來(lái)說(shuō)明它那怕是一小部分常用功能已是非常牽強(qiáng)。文章水平非常有限,請(qǐng)多提寶貴意見(jiàn)。
      回復(fù)  更多評(píng)論
      
    # re: eclipse使用實(shí)例[未登錄](méi) 2008-03-05 12:39 | Jarod
    的確強(qiáng)悍。。。因?yàn)橛梦淖謥?lái)講解IDE功能比較難,一般人會(huì)通過(guò)圖+文或視頻  回復(fù)  更多評(píng)論
      
    # re: eclipse使用實(shí)例 2008-03-12 15:24 | zhangjianying
    如果是要打出 System.out.println()
    有個(gè)便捷的方式就是 打 sysout 然后 Alt+/ 就可以了  回復(fù)  更多評(píng)論
      
    主站蜘蛛池模板: yellow免费网站| 无限动漫网在线观看免费| 国产区卡一卡二卡三乱码免费| 亚洲AV无码码潮喷在线观看| 老牛精品亚洲成av人片| 69影院毛片免费观看视频在线 | 久久亚洲AV成人无码国产| 麻豆一区二区三区蜜桃免费| 国产h肉在线视频免费观看| 亚洲精品夜夜夜妓女网| 直接进入免费看黄的网站| 丁香花免费高清视频完整版| 久久久亚洲欧洲日产国码农村| a免费毛片在线播放| 国产精品高清全国免费观看| 亚洲国产日韩在线人成下载| 免费国产叼嘿视频大全网站| 亚洲日韩国产精品乱| 亚洲.国产.欧美一区二区三区| 午夜国产精品免费观看| 亚洲欧洲日韩国产综合在线二区| 日韩精品无码永久免费网站| 韩国欧洲一级毛片免费| 亚洲中字慕日产2021| 99爱在线精品视频免费观看9| 亚洲狠狠婷婷综合久久久久 | 最近新韩国日本免费观看| 亚洲人成人一区二区三区| 色多多A级毛片免费看| 日韩在线看片免费人成视频播放| 亚洲国产夜色在线观看| 永久免费在线观看视频| 亚洲国产一区二区a毛片| 青青操视频在线免费观看| 亚洲综合无码精品一区二区三区| 九一在线完整视频免费观看| 四虎免费久久影院| 亚洲日韩在线中文字幕综合 | 久久亚洲精品国产精品婷婷 | 激情亚洲一区国产精品| 真人做A免费观看|