題設:
請制作一個類,它可以累計多個字符串中字母的出現次數,最后可以以從高到低的順序打印出來,沒有出現過的字母不打印。
如輸入的句子是: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次
請制作一個類,它可以累計多個字符串中字母的出現次數,最后可以以從高到低的順序打印出來,沒有出現過的字母不打印。
如輸入的句子是:ajax和JavaScript,最后輸出是
a出現了4次
j出現了2次
c出現了1次
i出現了1次
p出現了1次
r出現了1次
s出現了1次
t出現了1次
v出現了1次
x出現了1次
字母類:




























字母計數器類:


















































































測試語句:









輸出:









