Code:
/*
* WhiteMrse.java
* by CyberMuttaqin
* Created On 5, January 2010
*/
import java.util.*;
public class WhiteMorse{
private String asciiText= "";
private String morseText = "";
//True konfersi dai ascii ke morse
// konfersi dai morse ke ascii
private boolean fDirect = true;
private static int NR_CHARS = 36;
private static char[] ch = {
' ','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',
'1','2','3','4','5','6','7','8','9','0'};
private static String[] mc = {
null,
".-", //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
".----", //1
"..---", //2
"...--", //3
"....-", //4
".....", //5
"-....", //6
"--...", //7
"---..", //8
"----.", //9
"-----", //0
};
//buat instance
public WhiteMorse(String s, boolean fDirect){
if (fDirect) {
this.asciiText = s;
convertToMorse();
} else {
this.morseText = s;
convertToAscii();
}
}
public String getMorse(){
return morseText;
}
public String getAscii(){
return asciiText;
}
public String toString(){
String str =
"Text ASCII = " +getAscii()+"\n"+
"Text Morse = " +getMorse()+"\n";
return str;
}
static void test(){
System.out.println(new WhiteMorse("CYBERMUTTAQIN",true));
System.out.println(new WhiteMorse((new WhiteMorse("CYBERMUTTAQIN",true)).getMorse(),false));
}
public static void main(String[] args){
test();
}
private int searchMorse(String s){
int i = NR_CHARS-1;
mc[0] = s;
while (!mc[i].equals(s)) i--;
return i;
}
private int searchChar(char ch){
int i = NR_CHARS-1;
while (this.ch[i]!=ch)i--;
return i;
}
private void convertToMorse(){
morseText="";
for(int i=0;i<asciiText.length(); i++){
int idx = searchChar(asciiText.charAt(i));
if (idx ==0){
morseText += "\t";
} else {
morseText += mc[idx];
morseText += "";
}
}
}
private void convertToAscii(){
asciiText = "";
StringTokenizer TokensA = new StringTokenizer(morseText);
while (TokensA.hasMoreTokens()){
String morseWord = TokensA.nextToken("\t");
StringTokenizer TokensB = new StringTokenizer(morseWord);
while (TokensB.hasMoreTokens()) {
int idx = searchMorse(TokensB.nextToken());
if (idx ==0) {
asciiText += "";
} else {
asciiText += ch[idx];
}
}
asciiText += "";
}
}
}
yups... jadi dech...
Share This Thread