Class Terbilang Dan Implementasinya Pada Swing Di Java
Sudah banyak yang membahas wacana fungsi terbilang, baik di java, php, atau bahasa pemograman lainnya. tapi bahasan ini masih tetap menarik untuk di bahas. kebanyakan dari kita kebingungan saat kita mengerjakan konversi ini. dalam postingan ini Membuat fungsi Terbilang dengan PHP, aku sudah memperlihatkan instruksi untuk menciptakan fungsi terbilang dengan PHP, Logika tersebut sebetulnya dapat dipakai untuk menciptakan fungsi terbilang di Java.
Tapi kalaupun sulit untuk memahami logikanya, kini ini banyak betebaran kode-kode terbilang hehe. tinggal bagaimana cara kita memanfaatkanya, sehingga dapat dipakai dalam aplikasi yang kita buat. salah satunya class terbilang yang akan aku gunakan.
Menggunakan Class terbilang dalam aplikasi yang memakai Swing |
Berikut Kode class terbilangnya (Buat class gres lalu tambahkan method berikut), atau agan-agan dapat mendownload instruksi projectnya langsung.
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,}$)", ""); } /** * @return the num */ public String getNum() { return num; } /** * @param num the num to set */ public void setNum(Object num) { this.num = this.convertNumToString(num); } /** * @return the result */ public String getResult() { return result; } 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); }Adapun cara memakai class ini cukup sederhana, berikut contohnya:
double bilangan = 185099.9; System.out.println(new JavaTerbilang(bilangan));
Hasilnya menyerupai Berikut:
Mengintergrasikan Class JavaTerbilang.java dengan Class Swing
Untuk memakai Class ini dalam aplikasi yang memakai GUI, cukup mudah, berikut pola penggunaannya:
String angka = txtAngka.getText(); txtHasil.setText(new JavaTerbilang(angka).toString());
Hasilnya:
Download Projectnya:
Terima kasih sudah meluangkan waktu untuk mengunjungi blog ini.
Belum ada Komentar untuk "Class Terbilang Dan Implementasinya Pada Swing Di Java"
Posting Komentar