PROGRAM KONVERSI KARAKTER ASCII MENGGUNAKAN JAVA MIDLET (J2ME)
Deskripsi Program Konversi karakter
Program ini mengubah karakter ASCII yang printable saja ke bilangan biner, desimal, oktal, hexadesimal dan convert ke code html berdasarkan ASCII TABLE.pada penggunaannya program ini saya buat hanya dapat menginput karakter ascii ke kode-kode tersebut dan hanya 1 karakter yang diinputkan program ini saya menggunakan java Sun Wireless Tool kit 2.5.2 for CLDC, dan jdk 7 dengan emulator bawaaan dari CLDC itu sendiri.
Program midlet sendiri memiliki siklus hidupn yaitu pada saat MIDlet masuk ke dalam keadaan “Active” dengan method startUp() oleh AMS. dan ketika MIDlet masuk dalam keadaan “Destroyed” yaitu ketika AMS memanggil method destroyApp().
Kehidupan MIDlet dimulai ketika di-instantiate oleh AMS. MIDlet pada awalnya masuk dalam status “Pause” setelah perintah baru dibuat. AMS memanggil constructor public tanpa argumen dari MIDlet. Jika sebuah exception terjadi dalam constructor, MIDlet memasuki status “Destroyed” dan membuangnya segera.
berikut programnya :
file ConvertAscii.java
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public class ConvertAscii extends MIDlet implements CommandListener{
private TextField input, output;
private ChoiceGroup convertChoice;
private Command cmdkonversi, cmdexit;
public void startApp() {
Form form = new Form ("Konversi Karakter ASCII");
input = new TextField ("Input Karakter ASCII --> ", null , 1, TextField.ANY);
output = new TextField ("Hasil", null , 50, TextField.UNEDITABLE);
cmdkonversi = new Command ("Konversi", Command.OK, 1);
cmdexit = new Command ("Exit", Command.EXIT, 0);
convertChoice = new ChoiceGroup("Opsi Konversi --> ", Choice.POPUP);
convertChoice.append("dec [desimal]", null);
convertChoice.append("bin [biner]", null);
convertChoice.append("oct [oktal]", null);
convertChoice.append("hex [hexadesimal]", null);
convertChoice.append("html [HTML code]", null);
form.setTicker(new Ticker ("yang bisa di-inputkn hanya Karakter ASCII yang printable !!"));
form.append(convertChoice);
form.append(input);
form.append(output);
form.addCommand(cmdexit);
form.addCommand(cmdkonversi);
form.setCommandListener(this);
Display.getDisplay(this).setCurrent(form);
}
public void pauseApp() {
}
public void destroyApp(boolean unconditional) {
}
public void commandAction (Command c, Displayable d){
if (c == cmdkonversi) {
char teks = input.getString().charAt(0);
Konversi kon = new Konversi(teks);
int index = kon.dec;
if (convertChoice.isSelected(0)) {
output.setString(Integer.toString(index));
} else if (convertChoice.isSelected(1)) {
String bin = Integer.toBinaryString(index);
output.setString(bin);
} else if (convertChoice.isSelected(2)) {
String oct = Integer.toOctalString(index);
output.setString(oct);
} else if (convertChoice.isSelected(3)) {
String hex = Integer.toHexString(index);
output.setString(hex);
} else if (convertChoice.isSelected(4)) {
String html = "&#"+index+";";
output.setString(html);
}
} else if (c == cmdexit) {
notifyDestroyed();
}
}
}
Konversi.java
class Konversi{
int dec;
String bin, hex, oct;
char ascii[] = {' ', '!', '\"', '#', '$', '%', '&', '\'', '(', ')', '*', '+', ',', '-', '.', '/', '0',
'1', '2', '3', '4', '5', '6', '7', '8', '9', ':', ';', '<', '=', '>', '?', '@', 'A', 'B', 'C', 'D', 'E',
'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '[',
'\\', ']', '^', '_', '`', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q',
'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '{', '|', '}', '~'};
char[] asciigen = new char[ascii.length+32];
public Konversi(char in){
for(int i=0; i<ascii.length; i++){
asciigen[i+32] = ascii[i];
}
this.dec = indexNum(asciigen, in);
}
public int indexNum(char[] asciigen,char find) {
int k=0;
for(int i=0;i<asciigen.length;i++){
if(find==asciigen[i]){
k=i;
break;
}
}
return k;
}
}
Penjelasan program :Code diatas terdapat 2 class, yang pertama yaitu class ConvertAscii.java merupakan class utamanya dan class Konversi yang digunakan untuk perhitungan pencarian index dari karakter ascii tersebut menggunakan algoritma linear searching sederhana.
Pada class utamanya ini terdapat siklus hidup dari program mobile j2me tersebut yaitu terdapat perintah startApp(), pauseApp(), destroyApp(), dan commandAction() yang merupakan method yang digunakan jika program meminta interaksi seperti tombol atau kontroler pada emulator tersebut.
Dan pada class ini dilakukannya konversi pada masing-masing method pada saat object convertChoice di interaksi. Kemudian pada saat tombol Konversi ditekan, karakter input yang ditampung pada variable teks melakukan getString().charAt(0); untuk mengubah inputan dari Textfield yang sudah jadi string tersebut menjadi bertipe char agar bisa di differentiating atau dibandingkan nilainya oleh sesama char nantinya.
Kemudian masuk ke Class Konversi dengan membawa variable teks tadi pada konstruktor class tersebut. Pada Class tersebut terdapat array dari karakter-karakter ASCII tersebut yang nanti digunakan untuk pencarian karakter yang sesuai dengan inputan.
Agar index dari array char tersebut sesuai dengan urutan dari tabel ASCII tersebut maka array tersebut ditampung di array asciigen dengan index yang dimulai dari 32, karena pada ASCII table karakter yang printable dimulai dari urutan ke 32 hingga ke 127 jika di ubah ke decimal.
Setelah itu dimulai lah pencarian index-nya menggunakan algoritma linear searching yaitu sequential search. Dan setelah didapat hasilnya maka dikembalikanlah ke commandAction tersebut dan dikonversi sesuai opsi yang dipilih convertChoice.
Berikut hasilnya:
Program dan file jar saya upload pada laman Github


Komentar
Posting Komentar