Thứ Tư, 18 tháng 11, 2009

JavaFX

Ứng dụng và slide giới thiệu javafx cho thực tập nhận thưc

Thứ Hai, 16 tháng 11, 2009

Code TH JAVA phần 1

Code Th_Java của tui bài 13 trở về sau edit lại của J bài 6 thì mới đầu code như sau
   public String[] tenSo_arr = { "Không", "Một", "Hai", "Ba", "Bốn", "Năm", "Sáu",
           "Bảy", "Tám", "Chín" };
   public String[] donVi_arr = { "", "Mười", "Trăm" };
   public String[] donViKhong_arr = { "", "Lẻ", "" };
   public String[] donViNgan_arr = { "", "Ngàn", "Triệu", "Tỷ"};
public String docSoSangChu(long so) {
       StringBuffer strBuff = new StringBuffer();
       int i = 0, j = 0, k = 0;
       long tmp = so;
       int prev=0;//so truoc so hien tai 1 so
       boolean check=false; //kiem tra xem da doc so nao !0 chua
       while (tmp != 0) {
           i = (char) (tmp % 10);
           if(i!=0) check=true;
           if (j == 3) {// neu bang 3 tang he so don vi *1000
               j = 0;
               if(k==3)k=1;else k++;
               strBuff.insert(0, " " + donViNgan_arr[k]);
           }
           // doc don vi
           if (i != 0||(j==2&&check)) {
               strBuff.insert(0, " " + donVi_arr[j]);
           } else {
                   if(prev!=0)strBuff.insert(0, " " + donViKhong_arr[j]);//han che doc khi co 2 so ko lien tuc
               }  
           // doc chu so
           // neu bang ko thi ko doc hoac neu =1 vd 211 thi doc 2 tram muoi mot
           // nen ko can doc
           if ((i!=0||(j==2&&check))&& !(i == 1 && j == 1)) {
               strBuff.insert(0," "+ tenSo_arr[i]);
           }
           tmp = tmp / 10;
           j++;
           prev=i;
       }
       return strBuff.toString();

   }
cái này đọc số nhỏ cũng tốt nhưng số lớn hơi chuối nên chuyển qua code này
package Phan1;

public class bai6 {
 // main
 public int[] a;
 public String[] tenSo_arr = { "Không", "Một", "Hai", "Ba", "Bốn", "Năm", "Sáu",
   "Bảy", "Tám", "Chín" };
 public String[] donViNgan_arr = { "", "Ngàn", "Triệu", "Tỷ"};

 public static void main(String[] args) {
   bai6 b = new bai6();
   System.out.println(b.docSoSangChu("190000001"));
   System.out.println(b.docSoSangChu("1900000000"));
   System.out.println(b.docSoSangChu("90000"));
   System.out.println(b.docSoSangChu("1001001"));
   System.out.println(b.docSoSangChu("1000001"));
   System.out.println(b.docSoSangChu("100"));
   System.out.println(b.docSoSangChu("2111"));
   System.out.println(b.docSoSangChu("551231"));
   System.out.println(b.docSoSangChu("199999999999900"));

  do {
   try {
    System.out.println(b.docSoSangChu(Libary.NhapString(" nhap so can doi")));
   } catch (NumberFormatException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
   
  } while (Libary.IsContinue());

 }

 public String docSoSangChu(String str)throws NumberFormatException {
  System.out.print(str+" :");
  StringBuffer strBuff = new StringBuffer();
  int currentValue = 0, k = 0,j=0;
  Boolean check=false;//kiem tra xem da doc so nao khac ko chua
  Boolean check2=false;//kiem tra xem da doc so nao khac ko trong bo 3 so chua
  for (int i = str.length()-1; i>=0; i--,j++) {
   currentValue=str.charAt(i)-48;
   if(currentValue!=0) check=check2=true;
   if(currentValue <0&¤tValue>9) throw new NumberFormatException(" Ko phai la so");
   switch (j) {
   case 2:
    if(currentValue==0){
    if(check2)
     strBuff.insert(0, " "+ tenSo_arr[0]+" Trăm");
    check2=false;
    }
    else strBuff.insert(0, " Trăm");
    break;
   case 1:
    if(currentValue==0){
     if(str.charAt(i+1)!=48) strBuff.insert(0, " lẻ");
    }else if (currentValue==1){
     strBuff.insert(0, " Mười");
     continue;
    }else {
     strBuff.insert(0, " Mươi");
    }
    break;
   case 3 :
    if(k==3){
     k=1;check=false;
    }k++;
    j=0;
    
    if(currentValue!=0){
     strBuff.insert(0, " "+ donViNgan_arr[k]);
    }else {
     if(check){
      if(  (i-2)>=0&&str.charAt(i-1)==48&& str.charAt(i-2)==48){
       strBuff.insert(0, " "+ tenSo_arr[0]+" "+ donViNgan_arr[k]);
      }else {
       strBuff.insert(0, " "+ donViNgan_arr[k]);
      }
     }else {
      if(  (i-2)<0){
       strBuff.insert(0, " "+ donViNgan_arr[k]);
      }else if (str.charAt(i-1)!=48|| str.charAt(i-2)!=48){
       strBuff.insert(0, " "+ donViNgan_arr[k]);
      }
     }
    } 
   case 0: 
    if(currentValue==1 &&(i-1)>=0&&str.charAt(i-1)!=48&&str.charAt(i-1)!=49){
     strBuff.insert(0, " Mốt");
     continue;
    }
    break;
   }
   if(currentValue!=0) {
    
   strBuff.insert(0," " +tenSo_arr[currentValue]);
   }
   
  }
  
  return strBuff.toString();
 }
}


Đọc rất chi là pro
190000001 : Một Trăm Chín Mươi Triệu Không Ngàn Không Trăm lẻ Một
1900000000 : Một Tỷ Chín Trăm Triệu
90000 : Chín Mươi Ngàn
1900 : Một Ngàn Chín Trăm
1000001 : Một Triệu Không Ngàn Không Trăm lẻ Một
100 : Một Trăm
2111 : Hai Ngàn Một Trăm Mười Một
551231 : Năm Trăm Năm Mươi Mốt Ngàn Hai Trăm Ba Mươi Mốt
199999999999900 : Một Trăm Chín Mươi Chín Triệu Chín Trăm Chín Mươi Chín Tỷ Chín Trăm Chín Mươi Chín Triệu Chín Trăm Chín Mươi Chín Ngàn Chín Trăm
Đây là code phần 1
bài 6 mình có sửa 1 tí các bạn lấy code thì update lại nhé Code

Thứ Ba, 10 tháng 11, 2009

Các hàm cho Unicode chữ Việt

Dưới đây là Listing của một Sub và 13 hàm (Functions) dùng để xử lý Unicode chữ Việt. Ðể hiểu thêm về Unicode và nhất là cách hoán chuyển giữa UTF-16 và UTF-8 xin đọc bài Căn bản Unicode cho VB6 Programers. http://www.vovisoft.com/unicode/UniFunctions.htm