Code đọc số: Trường hợp 01 xử lí như thế nào?

Trường hợp có con 0 đằng trước thì xử lý như nào ạ (Ví dụ: “01” in ra “Một”)

Code hiện tại như này rồi:

public static void main(String[] args) {
	Scanner sc = new Scanner(System.in);
	 	System.out.print("Nhập vào một số nhỏ hơn 9999: ");
			int number = sc.nextInt();
			int ngan = number/1000;
			int tram = (number/100)%10;
			int chuc = (number/10)%10;
			int donVi = number%10;
			
			String thousand="", hundred="", dozen="", odd="";
			
		switch (ngan) {
			case 0: thousand = ""; break;
			case 1: thousand = "Một Ngàn"; break;
			case 2: thousand = "Hai Ngàn"; break;
			case 3: thousand = "Ba Ngàn"; break;
			case 4: thousand = "Bốn Ngàn"; break;
			case 5: thousand = "Năm Ngàn"; break;
			case 6: thousand = "Sáu Ngàn"; break;
			case 7: thousand = "Bảy Ngàn"; break;
			case 8: thousand = "Tám Ngàn"; break;
			case 9: thousand = "Chín Ngàn"; break;
		}
		
		switch (tram) {
			case 0:
				if (ngan!=0)
					hundred = "Không Trăm";
				break;
			case 1: hundred = "Một Trăm"; break;
			case 2: hundred = "Hai Trăm"; break;
			case 3: hundred = "Ba Trăm"; break;
			case 4: hundred = "Bốn Trăm"; break;
			case 5: hundred = "Năm Trăm"; break;
			case 6: hundred = "Sáu Trăm"; break;
			case 7: hundred = "Bảy Trăm"; break;
			case 8: hundred = "Tám Trăm"; break;
			case 9: hundred = "Chín Trăm"; break;
		}
		
		switch (chuc) {
			case 0:
				if (donVi!=0)
					dozen = "Lẻ";
				break;
				
			case 1: dozen = "Mười"; break;
			case 2: dozen = "Hai Mươi"; break;
			case 3: dozen = "Ba Mươi"; break;
			case 4: dozen = "Bốn Mươi"; break;
			case 5: dozen = "Năm Mươi"; break;
			case 6: dozen = "Sáu Mươi"; break;
			case 7: dozen = "Bảy Mươi"; break;
			case 8: dozen = "Tám Mươi"; break;
			case 9: dozen = "Chín Mươi"; break;
		}
		switch (donVi) {
		
			case 0: odd = ""; break;
			case 1: odd = "Mốt"; break;
			case 2: odd = "Hai"; break;
			case 3: odd = "Ba"; break;
			case 4:
				
				if (chuc==0 || chuc==1) {
					odd = "Bốn";
				}else {
					odd = "Tư";
				}break;
				
			case 5:
				
				if (chuc==0) {
					odd = "Năm";
				}else {
					odd = "Lăm";
				}break;
				
			case 6: odd = "Sáu"; break;
			case 7: odd = "Bảy"; break;
			case 8: odd = "Tám"; break;
			case 9: odd = "Chín"; break;
		}
		
		System.out.println("In ra chữ theo tiếng việt: "+thousand+" "+hundred+" "+dozen+" "+odd);
}

Lọc bỏ các số 0 ở đầu đi là được :smile:

2 Likes

Mình gợi ý cách viết code thôi, ở đoạn này

switch (tram) {
    case 0:
        if (ngan!=0)
            hundred = "Không Trăm";
        break;
    case 1: hundred = "Một Trăm"; break;
    case 2: hundred = "Hai Trăm"; break;
    case 3: hundred = "Ba Trăm"; break;
    case 4: hundred = "Bốn Trăm"; break;
    case 5: hundred = "Năm Trăm"; break;
    case 6: hundred = "Sáu Trăm"; break;
    case 7: hundred = "Bảy Trăm"; break;
    case 8: hundred = "Tám Trăm"; break;
    case 9: hundred = "Chín Trăm"; break;
}

Có thể thay thành

private static String[] HUNDRED = { 
        "", "Một Trăm", "Hai Trăm", "Ba Trăm", "Bốn Trăm",
        "Năm Trăm", "Sáu Trăm", "Bảy Trăm", "Tám Trăm", "Chín Trăm" };
...

hundred = HUNDRED[tram];
if (tram == 0 && ngan != 0)
    hundred = "Không Trăm";
5 Likes

em mới học nên ngu lắm anh ơi huhu

Nhưng viết rõ từng case một sẽ dễ nhìn hơn :slight_smile:

Nếu không dùng case thì tách ra “Không” “Một” “Hai” “Ba”… luôn.

2 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?