Unknown
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
0 Responses

Đăng nhận xét