Home » » Membuat Aplikasi Text Terbilang Dengan Java Netbeans

Membuat Aplikasi Text Terbilang Dengan Java Netbeans

Posted by Catatan Wong Awam on Friday 23 June 2017

Hasil gambar untuk logo javaSelamat malam kawan semua, maaf yah baru sempet update lagi..kali ini saya akan share bagaimana cara membuat aplikasi text terbilang dengan java, sebenarnya apa sih text terbilang? jadi jika kita inputkan "50000" maka akan tertulis dalam bentuk terbilang "Lima Puluh Ribu". langsung saja kita perhatikan gambar berikut :


Langsung saja langkah langkahnya sebagai berikut :

Pertama : Kita buat dulu sebuah project baru di Netbeans lalu kita buat sebuah class bernama "terbilang". Perhatikan gambar berikut :


Kedua : Kita masukan script berikut ke dalam class terbilang yang tadi kita sudah buat :

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package textterbilang;
import java.util.HashMap;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.regex.PatternSyntaxException;
/**
 *
 * @author anton
 */
public class terbilang {
    Map digits = new HashMap();
    Map orders = new HashMap();
    private String num = null;
    private String result = null;
    Class clazz = null;
    public terbilang() {
        digits.put("0", "nol");
        digits.put("1", "satu");
        digits.put("2", "dua");
        digits.put("3", "tiga");
        digits.put("4", "empat");
        digits.put("5", "lima");
        digits.put("6", "enam");
        digits.put("7", "tujuh");
        digits.put("8", "delapan");
        digits.put("9", "sembilan");
        orders.put("0", "");
        orders.put("1", "puluh");
        orders.put("2", "ratus");
        orders.put("3", "ribu");
        orders.put("6", "juta");
        orders.put("9", "miliar");
        orders.put("12", "triliun");
        orders.put("15", "kuadriliun");
    }
    public terbilang(Object num) {
        this();
        this.num = convertNumToString(num);
    }
    private void init() {
        boolean is_neg = false;
        if (clazz.equals(Double.class) || clazz.equals(Float.class)) {
            Double chk = Double.parseDouble(num);
            is_neg = chk < 0;
        } else {
            is_neg = num.startsWith("-") ? true : false;
        }
        String ints = "";
        try {
            Pattern regex = Pattern.compile("^[+-]?(\\d+)");
            Matcher regexMatcher = regex.matcher(num);
            if (regexMatcher.find()) {
                ints = regexMatcher.group(1);
            }
        } catch (PatternSyntaxException ex) {
        }
        int mult = 0;
        String wint = "";
        while (!ints.isEmpty()) {
            try {
                Pattern regex = Pattern.compile("(\\d{1,3})$");
                Matcher regexMatcher = regex.matcher(ints);
                while (regexMatcher.find()) {
                    // ambil satuan, puluhan, dan ratusan
                    int m = Integer.parseInt(regexMatcher.group());
                    int s = (m % 10);
                    int p = ((m % 100 - s) / 10);
                    int r = ((m - p * 10 - s) / 100);
                    // konversi ratusan
                    String g = "";
                    if (r == 0) {
                        g = "";
                    } else if (r == 1) {
                        g = "se" + orders.get("2");
                    } else {
                        g = digits.get("" + r + "") + " " + orders.get("2");
                    }
                    // konversi puluhan dan satuan
                    if (p == 0) {
                        if (s == 0) {
                        } else if (s == 1) {
                            g = (!g.isEmpty() ? (g + " " + digits.get("" + s + "").toString()) : (mult == 0 ? digits.get("1").toString() : "se"));
                        } else {
                            g = (!g.isEmpty() ? g + " " : "") + digits.get("" + s + "").toString();
                        }
                    } else if (p == 1) {
                        if (s == 0) {
                            g = (!g.isEmpty() ? g + " " : "") + "se" + orders.get("1");
                        } else if (s == 1) {
                            g = (!g.isEmpty() ? g + " " : "") + "sebelas";
                        } else {
                            g = (!g.isEmpty() ? g + " " : "") + digits.get("" + s + "") + " belas";
                        }
                    } else {
                        g = (!g.isEmpty() ? g + " " : "") + digits.get("" + p + "") + " puluh" + (s > 0 ? " " + digits.get("" + s + "") : "");
                    }
                    // gabungkan dengan hasil sebelumnya
                    wint = (!g.isEmpty() ? (g + (g.equals("se") ? "" : " ") + orders.get("" + mult + "")) : "") + (!wint.isEmpty() ? " " + wint : "");
                    // pangkas ribuan/jutaan/dsb yang sudah dikonversi
                    String resultString = "";
                    try {
                        Pattern tsRegex = Pattern.compile("\\d{1,3}$");
                        Matcher regexMatchers = tsRegex.matcher(ints);
                        try {
                            resultString = regexMatchers.replaceAll("");
                            ints = resultString;
                        } catch (IllegalArgumentException ex1) {
                        } catch (IndexOutOfBoundsException ex2) {
                        }
                    } catch (PatternSyntaxException ex3) {
                    }
                    mult += 3;
                }
            } catch (PatternSyntaxException ex) {
            }
        }
        if (wint.isEmpty()) {
            wint = digits.get("0").toString();
        }
        //// angka di kanan desimal
        String frac = "";
        try {
            Pattern regexf = Pattern.compile("\\.(\\d+)");
            Matcher regexMatcherf = regexf.matcher(num);
            if (regexMatcherf.find()) {
                frac = regexMatcherf.group();
            }
        } catch (PatternSyntaxException ex) {
        }
        String wfrac = "";
        for (int i = 0; i < frac.length(); i++) {
            String indexf = frac.substring(i, i + 1);
            if (digits.containsKey(indexf)) {
                wfrac += (!wfrac.isEmpty() ? " " : "") + digits.get(indexf);
            }
        }
        result = ((is_neg ? "minus " : "") + wint + ((!wfrac.isEmpty()) ? " koma " + wfrac : ""));
        result = result.replaceAll("\\s{2,}", " ");
        result = result.replaceAll("(null )|(\\s{1,}$)", "");
    }
    public String getNum() {
        return num;
    }
    public void setNum(Object num) {
        this.num = this.convertNumToString(num);
    }
       public String getResult() {
        return result;
    }
    @Override
    public String toString() {
        init();
        return getResult();
    }
    private String convertNumToString(Object value) {
        if (null == clazz) {
            clazz = value.getClass();
        }
        String reval = null;
        if (Character.class.equals(clazz) || char.class.equals(clazz) || Double.class.equals(clazz) || Float.class.equals(clazz) || Integer.class.equals(clazz) || Long.class.equals(clazz) || Short.class.equals(clazz)) {
            reval = value.toString();
        } else {
            reval = value.toString();
            //throw new NumberFormatException("Your Input has failed! Numeric or decimal only can be process");
        }
        return (reval);
    }
}

Ketiga : Kita buat sebuah JFrame Form dengan nama "Form_Terbilang", lalu desain GUI nya seperti gambar di bawah ini :


Keempat :kita klik kanan pada jTextField1 lalu pilih Event -> key -> KeyPress, perhatikan gambar di bawah ini :


Kelima : masukan script berikut di dalam event jTextField1.

        String angka =  jTextField1.getText();
        jLabel3.setText(new terbilang(angka)+"".toString());


Keenam : coba jalankan programnya lalu isikan angka di dalamnya lalu tekan enter untuk melihat hasilnya.


Oke sekian dulu cara membuat aplikasi text terbilang menggunakan java netbeans, mohon maaf bila ada kesalahan dan kekurangan semoga bermanfaat.


Source Code From : http://uniqosmart.blogspot.co.id/2016/10/program-java-netbeans-membuat-text.html



0 comments:

Post a Comment

Translate

.comment-content a {display: none;}