Wednesday, October 29, 2008

NumberFormat: Remove decimal point

Back again w00t w00t. Ahahaha. Dua hari lepas dapat lagi satu ilmu dalam java programming ni. Okay first kita tengok dulu apa problem kat sini. Aku boleh ringkaskan masalah aku ni kepada 4 peringkat:

1 - get double value (exp: 678.1) daripada database dan formatkan kepada 2 decimal point/places (exp: 678.10).
2 - bila dah di formatkan double value ni akan di'cast'kan kepada String, so nak tukar balik kepada Double supaya aku boleh darab dengan 100.
3 - sebab aku darab pulak dengan 100 ialah untuk mendapatkan data macam (678.10 > 67810). So senang cerita aku nak jadikan (678.1 kepada 67810)

Kita start dengan import dulu library/API yang diperlukan
import java.text.NumberFormat;

Pastu set Max/Min fraction digit menggunakan NumberFormat. Untuk contoh ni aku setkan Max/Min kepada 2 titik perpuluhan
NumberFormat form = NumberFormat.getInstance();
form.setMinimumFractionDigits(2);
form.setMaximumFractionDigits(2);

Untuk assign value, aku guna for loop + Iterator. Kat bawah ni korang boleh nampak macam mana dtlIterator.getTotal() diformatkan kepada 2 titik perpuluhan menggunakan from.format(). Pada tahap ni, value getTotal() akan ber'type' String dengan 2 titik perpuluhan. Double.parseDouble pulak akan tukar Stiing ni kepada Double and darabkan dengan 100 ( *100 ).
for (Iterator dtl = dtlList.iterator(); dtl.hasNext(); ) {
PendPaymentLogDtl dtlIterator = dtl.next();
Double tempTotal = Double.parseDouble(form.format(dtlIterator.getTotal())) * 100;
System.out.println("test lagi double >>> " + tempTotal.longValue());
}

Harapnya korang faham apa yang aku nak buat kat sini. Harap dapat membantu, walaupun tak byk. Daaa...

Wednesday, October 22, 2008

Regex tokenizer

Seperti tajuk post kali ni, aku nak sembang sikit pasal tokenizer (dalam java). Baru - baru dapa assignment baru dari bos, yang mana aku kena buat satu Servlet. And the purpose of this Servlet ialah aku kena capture HTTPRequest (post) dan guna paramiter/string yang dihantar.

So secara ringkasnya penyelesaian aku ialah guna tokenizer. Baca punya baca punya baca, banyak site cakap java.util.StringTokenizer dah diklafisikasikan sebagai lagacy class and cadangkan untuk guna split method dalam String atau java.util.regex. Oleh itu aku pun guna dua - dua method ngan API.

Takyah la sembang bebanyak la kan, ok kat bawah ni ialah contoh coding yang aku guna. Simple jela untuk rujukan je.

First import dulu API ni.

import java.util.regex.Pattern;

Second ni simple coding yang aku cakap tu.

String regex = ",";
String fullString = null;

String fullString = request.getParameter("payment").toString();
System.out.println("payment = " + fullString);

Pattern pattern = Pattern.compile(regex);
String[] subString = pattern.split(fullString);

for (int i = 0; i <>
subString[i] = subString[i];
}

Basicnya, request.getParameter("payment").toString() akan capture String dari HTTPPost aku tadi dan assign kepada variable fullString. pastu pattern.split akan tokenize fullString kepada subString. Delimiter dia ialah regex ataupun ",". Katakan aku dapat satu full sting mcm "hello,world", so subString[0] akan simpan value "hello" manakala subString[1] akan simpan value "world". Emmm tu je kot, haaa lupa lagi satu, kalau korang takut ada exception apa ke, letak la try catch kan. Aku malas je nak tulis sini sebab tu bukan tujuan utama.

Tu je kot. Sama - sama belajar okay!. <3