Uji coba lima huruf yang paling diminati diujikan pada artikel berbahasa : Bahasa Indonesia, Sunda, Jawa, Jepang dan Inggris.
Berikut ini adalah hasil screen capture dari masing-masing bahasa yang diujicobakan :
1. Bahasa Indonesia

2. Bahasa Sunda

3. Bahasa Jawa

4. Bahasa Inggris

5. Bahasa Jepang

Berdasarkan percobaan dengan menguji 3 buah artikel yang berbeda untuk masing-masing bahasa, diperoleh kesimpulan lima huruf terfavorit (dari kiri ke kanan) adalah sbb :
1. Bahasa Indonesia : a, n, e, i, k
2. Bahasa Sunda : a, n, g, i, r
3. Bahasa Jawa : a, n, e, u, g
4. Bahasa Inggris : e, t, a, s , i
5. Bahasa Jepang : a, o, i, t, u
jadi huruf yang paling diminati adalah huruf “a”, kecuali pada bahasa inggris most wanted word nya adalah “e”.
Berikut ini adalah source code dari program Statistik Huruf.java :
import javax.swing.SwingUtilities;
import javax.swing.JPanel;
import javax.swing.JFrame;
import java.awt.Font;
import javax.swing.JLabel;
import java.awt.Insets;
import java.awt.Rectangle;
import java.awt.Dimension;
import java.awt.Point;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JButton;
import javax.swing.JTable;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.TableModel;
/**
* @author Fera Tri Hartanti
*
*/
public class StatistikHuruf extends JFrame {
private static final long serialVersionUID = 7599606226494176631L;
private JPanel jContentPane = null;
private JLabel labelMasukanTeks = null;
private JScrollPane scrollPaneTeks = null;
private JTextArea textArea = null;
private JButton buttonHitungStatistik = null;
private JScrollPane scrollPaneTabel = null;
private JTable tableStatistik = null;
private JLabel labelTotalHuruf = null;
/**
* @param args
*/
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
StatistikHuruf statistikHuruf = new StatistikHuruf();
statistikHuruf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
statistikHuruf.setVisible(true);
statistikHuruf.setResizable(false);
statistikHuruf.setLocationRelativeTo(null);
statistikHuruf.drawTable(new String[][]{});
}
});
}
/**
* This is the default constructor
*/
public StatistikHuruf() {
super();
initialize();
}
/**
* This method initializes this
*
* @return void
*/
private void initialize() {
this.setSize(397, 610);
this.setFont(new Font(“Trebuchet MS”, Font.PLAIN, 12));
this.setContentPane(getJContentPane());
this.setTitle(“Statistik Huruf”);
}
/**
* Draw table column and row
* @param data
*/
private void drawTable (final Object[][] data){
final String [] columnNames = {
“Huruf”,
“Frekuensi”,
“Persentase”
};
TableModel tableModel = new AbstractTableModel (){
private static final long serialVersionUID = 615156074342132795L;
public int getColumnCount() {
return columnNames.length;
}
public int getRowCount() {
return data.length;
}
public Object getValueAt(int rowIndex, int columnIndex) {
return data[rowIndex][columnIndex];
}
public String getColumnName (int columnIndex){
return columnNames[columnIndex];
}
public Class getColumnClass (int columnIndex){
return getValueAt(0, columnIndex).getClass();
}
};
this.getTableStatistik().setModel(tableModel);
this.getTableStatistik().getColumn(“Huruf”).setMaxWidth(80);
this.getTableStatistik().getColumn(“Huruf”).setPreferredWidth(80);
this.getTableStatistik().getColumn(“Frekuensi”).setMaxWidth(100);
this.getTableStatistik().getColumn(“Frekuensi”).setPreferredWidth(100);
this.getTableStatistik().repaint();
}
/**
* Statistic calculation
*/
private void calculate (){
// get text
String text = this.getTextArea().getText();
// check if text is not null nor empty
if (text!=null && text.trim().length()>0){
// trim and change case into lower
text = text.trim().toLowerCase();
// initiate map
Map mapHuruf = new HashMap ();
// initiate total alphabet
int totalHuruf = 0;
// iterate and count
for (int i=0; i<text.length(); i++){
// get char
char character = text.charAt(i);
// check if character is between ‘a’ and ‘z’
if (character >= ‘a’ && character <=’z'){
// default frequency
Integer frequency = new Integer(1);
// check if character is already in map
if (mapHuruf.containsKey(String.valueOf(character))){
// get total current character
frequency =
(Integer) mapHuruf.get(String.valueOf(character));
// increment total current character
frequency = new Integer (frequency.intValue()+1);
}
// put character into map
mapHuruf.put(String.valueOf(character), frequency);
// increment
totalHuruf++;
}
}
// create new List of Entry
List listHuruf = new ArrayList(mapHuruf.entrySet());
// sort by frequency
Collections.sort(listHuruf, new Comparator (){
public int compare(Object obj1, Object obj2) {
// initiate result
int result = 1;
// cast
int frequencyObj1 = ((Integer) ((Entry)obj1).getValue()).intValue();
int frequencyObj2 = ((Integer) ((Entry)obj2).getValue()).intValue();
char charObj1 = ((String)((Entry)obj1).getKey()).charAt(0);
char charObj2 = ((String)((Entry)obj2).getKey()).charAt(0);
// sort descending by frequency
if (frequencyObj1 > frequencyObj2){
result = 0;
}
else if (frequencyObj1 == frequencyObj2){
// sort ascending by character
if (charObj1 < charObj2){
result = 0;
}
}
// return
return result;
}
});
// initiate array of string
Object [][] data = new Object [listHuruf.size()][3];
// iterator
Iterator iterator = listHuruf.iterator();
// initiate index
int index = 0;
// loop
while (iterator.hasNext()){
// get Entry
Entry obj = (Entry) iterator.next();
// get character
String character = (String) obj.getKey();
// get frequency
Integer frequency = (Integer) obj.getValue();
// calculate percentage
double percentage = (frequency.doubleValue() / totalHuruf) * 100;
// set into data
data[index][0] = ” ” + character;
data[index][1] = frequency;
data[index][2] = new Double(percentage);
// increment
index++;
}
// draw table
this.drawTable(data);
// set total huruf
this.labelTotalHuruf.setText(“Total Huruf = ” + totalHuruf);
}
else{
this.drawTable(new String[][]{});
this.labelTotalHuruf.setText(“Total Huruf = 0″);
}
}
/**
* This method initializes jContentPane
*
* @return javax.swing.JPanel
*/
private JPanel getJContentPane() {
if (jContentPane == null) {
labelTotalHuruf = new JLabel();
labelTotalHuruf.setBounds(new Rectangle(17, 547, 300, 16));
labelTotalHuruf.setFont(new Font(“Trebuchet MS”, Font.PLAIN, 12));
labelTotalHuruf.setText(“Total Huruf = 0″);
labelMasukanTeks = new JLabel();
labelMasukanTeks.setText(“Masukan Teks :”);
labelMasukanTeks.setLocation(new Point(15, 15));
labelMasukanTeks.setFont(new Font(“Trebuchet MS”, Font.PLAIN, 12));
labelMasukanTeks.setSize(new Dimension(111, 16));
jContentPane = new JPanel();
jContentPane.setLayout(null);
jContentPane.add(labelMasukanTeks, null);
jContentPane.add(getScrollPaneTeks(), null);
jContentPane.add(getButtonHitungStatistik(), null);
jContentPane.add(getScrollPaneTabel(), null);
jContentPane.add(labelTotalHuruf, null);
}
return jContentPane;
}
/**
* This method initializes scrollPaneTeks
*
* @return javax.swing.JScrollPane
*/
private JScrollPane getScrollPaneTeks() {
if (scrollPaneTeks == null) {
scrollPaneTeks = new JScrollPane();
scrollPaneTeks.setSize(new Dimension(353, 230));
scrollPaneTeks.setLocation(new Point(15, 35));
scrollPaneTeks.setViewportView(getTextArea());
}
return scrollPaneTeks;
}
/**
* This method initializes textArea
*
* @return javax.swing.JTextArea
*/
private JTextArea getTextArea() {
if (textArea == null) {
textArea = new JTextArea();
textArea.setFont(new Font(“Trebuchet MS”, Font.PLAIN, 12));
textArea.setLineWrap(true);
textArea.setMargin(new Insets(2,4,2,4));
}
return textArea;
}
/**
* This method initializes buttonHitungStatistik
*
* @return javax.swing.JButton
*/
private JButton getButtonHitungStatistik() {
if (buttonHitungStatistik == null) {
buttonHitungStatistik = new JButton();
buttonHitungStatistik.setText(“Hitung Statistik”);
buttonHitungStatistik.setSize(new Dimension(130, 21));
buttonHitungStatistik.setLocation(new Point(133, 279));
buttonHitungStatistik.setFont(new Font(“Trebuchet MS”, Font.PLAIN, 12));
buttonHitungStatistik.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
calculate();
}
});
}
return buttonHitungStatistik;
}
/**
* This method initializes scrollPaneTabel
*
* @return javax.swing.JScrollPane
*/
private JScrollPane getScrollPaneTabel() {
if (scrollPaneTabel == null) {
scrollPaneTabel = new JScrollPane();
scrollPaneTabel.setBounds(new Rectangle(17, 315, 349, 226));
scrollPaneTabel.setViewportView(getTableStatistik());
}
return scrollPaneTabel;
}
/**
* This method initializes tableStatistik
*
* @return javax.swing.JTable
*/
private JTable getTableStatistik() {
if (tableStatistik == null) {
tableStatistik = new JTable();
tableStatistik.setShowGrid(true);
tableStatistik.setFont(new Font(“Trebuchet MS”, Font.PLAIN, 12));
}
return tableStatistik;
}
} // @jve:decl-index=0:visual-constraint=”10,10″