當柳上原的風吹向天際的時候...

          真正的快樂來源于創造

            BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
            368 Posts :: 1 Stories :: 201 Comments :: 0 Trackbacks
          題設:
          請制作一個類,它可以累計多個字符串中字母的出現次數,最后可以以從高到低的順序打印出來,沒有出現過的字母不打印。
          如輸入的句子是:ajax和JavaScript,最后輸出是
          a出現了4次
          j出現了2次
          c出現了1次
          i出現了1次
          p出現了1次
          r出現了1次
          s出現了1次
          t出現了1次
          v出現了1次
          x出現了1次

          字母類:
          public class Letter{
            
          // 包含的字母
            private char c;
            
            
          // 字母出現的次數
            private int count;
            
            
          public void addCount(int count){
              
          this.count+=count;
            }


            
          public char getC() {
              
          return c;
            }


            
          public void setC(char c) {
              
          this.c = c;
            }


            
          public int getCount() {
              
          return count;
            }


            
          public void setCount(int count) {
              
          this.count = count;
            }

          }


          字母計數器類:
          public class LetterCaculator {
            
          // 儲存26個字母及其出現次數的數組
            private Letter[] letters;

            
          /**
             * 構造函數
             *
             
          */

            
          public LetterCaculator() {
              
          // 初始化數組
              letters = new Letter[26];

              
          // 初始化每個數組子項并給其中字母賦值
              for (int i = 0; i < letters.length; i++{
                letters[i] 
          = new Letter();
                letters[i].setC((
          char) ('a' + i));
              }

            }


            
          /**
             * 分析句子,累計其中字母出現次數,大小寫不論
             * 
          @param sentence
             
          */

            
          public void analyse(String sentence) {
              sentence
          =sentence.toLowerCase();
              
              
          for (int i = 0; i < sentence.length(); i++{
                
          char c = sentence.charAt(i);
                
                
          if(c>='a' && c<='z'){
                  letters[c 
          - 'a'].addCount(1);
                }

              }

            }


            
          /**
             * 打印字母出現次數,出現零次不計
             *
             
          */

            
          public void printLettersInfo() {
              Letter[] letters2 
          = letters;
              insertSort(letters2);

              
          for (int i = letters2.length - 1; i > 0; i--{
                Letter letter 
          = letters2[i];

                
          if (letter.getCount() > 0{
                  System.out.println(letter.getC() 
          + "出現了" + letter.getCount()
                      
          + "");
                }
           else {
                  
          break;
                }

              }

            }


            
          /**
             * 對數組進行排序
             * 
          @param arr
             
          */

            
          private static void insertSort(Letter[] arr) {
              
          int i;
              Letter temp;
              
          // 插入位置
              int insertPos;
              
          for (i = 1; i < arr.length; i++{
                
          // 當前需要進入已排序隊列的項
                temp = arr[i];
                insertPos 
          = i;

                
          // 在已排序序列中找到合適的位置
                while (0 < insertPos
                    
          && arr[insertPos - 1].getCount() >= temp.getCount()) {
                  arr[insertPos] 
          = arr[insertPos - 1];
                  
          --insertPos;
                }


                
          // 當前項該處于的位置
                arr[insertPos] = temp;
              }

            }

          }


          測試語句:
          LetterCaculator letterCaculator=new LetterCaculator();

          //letterCaculator.analyse("struts");
          //letterCaculator.analyse("spring");
          //letterCaculator.analyse("Hibernate");
          letterCaculator.analyse("JavaScript");
          letterCaculator.analyse(
          "Ajax ");

          letterCaculator.printLettersInfo();

          輸出:
          a出現了4次
          j出現了2次
          c出現了1次
          i出現了1次
          p出現了1次
          r出現了1次
          s出現了1次
          t出現了1次
          v出現了1次
          x出現了1次
          posted on 2009-02-27 23:45 何楊 閱讀(385) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 克什克腾旗| 黔江区| 都昌县| 镇康县| 旬阳县| 海阳市| 昭苏县| 连城县| 温泉县| 芮城县| 深水埗区| 新泰市| 芷江| 敦化市| 张家港市| 临海市| 宁阳县| 桓仁| 玛曲县| 静宁县| 黄石市| 沁水县| 读书| 从江县| 郧西县| 饶河县| 彝良县| 罗源县| 望谟县| 大城县| 嵩明县| 崇礼县| 连城县| 电白县| 易门县| 辽中县| 新泰市| 岳阳县| 大姚县| 美姑县| 泸水县|