31 มี.ค. 2554

ตัวเลขเป็นจำนวนเงินไทย

import javax.swing.JOptionPane;

public class numtostr {

 public static void main(String[] args) {

  String getNum = JOptionPane.showInputDialog("Enter Number");

  String result = NumToStr(getNum);

  System.out.println(result);

 }

 public static String NumToStr(String num) {

  int Flen, Llen = 0;

  String sNum[] = new String[2];

  sNum[0] = num;

  System.out.println("XX" + num.indexOf(".") + "XX");

  if (num.indexOf(".") >= 0) {

   sNum = num.split("\\.");

   Flen = sNum[0].length();

   Llen = sNum[1].length();

  } else {

   Flen = num.length();

  }

  int count = Flen / 7;

  if (count == 0) {

   count = 1;

  }

  String meanThai[] = { "", "สิบ", "ร้อย", "พัน", "หมื่น", "แสน", "ล้าน" };

  String numThai[] = { "หนึ่ง", "สอง", "สาม", "สี่", "ห้า", "หก", "เจ็ด",
    "แปด", "เก้า" };

  StringBuffer Fbuf = new StringBuffer();

  StringBuffer Lbuf = new StringBuffer();

  for (int i = 0; i < Flen; i++) {
   int inum = 0;
   for (char k = '1'; k <= '9'; k++) {
    System.out.println(sNum[0].charAt(i) + "=" + k);
    if (sNum[0].charAt(i) == k) {
     Fbuf.append(numThai[inum]);
     Fbuf.append(meanThai[Flen - i - 1]);
    }
    inum++;
   }
  }
  for (int i = 0; i < Llen; i++) {
   int inum = 0;
   for (char k = '1'; k <= '9'; k++) {
    System.out.println(sNum[1].charAt(i) + "=" + k);
    if (sNum[1].charAt(i) == k) {
     Lbuf.append(numThai[inum]);
    }
    inum++;
   }
  }
  if(Fbuf.toString().indexOf("สองสิบ")>=0){
   Fbuf.replace(Fbuf.toString().lastIndexOf("สองสิบ"), Fbuf.toString().lastIndexOf("สองสิบ")+3, "ยี่");
  }
  String dot = "";
  if(!Lbuf.toString().trim().equals("")){
   dot = "จุด";
  }
  String result = Fbuf.toString() + dot + Lbuf.toString();
  return result;

 }
}

2 ความคิดเห็น:

  1. ตรง for loop ข้างล่าง for ที่สมบูรณ์เป็นยังไงเหรอครับ

    ตอบลบ
    คำตอบ
    1. แก้ใหม่แล้วครับ พอดีแสดงไม่ครบ

      ลบ