1. Từ số sang chữ: 111 > một một một.
2. Từ chữ sang số: một một một > 111.
3. Chuyển số thành cách đọc tiếng việt: 111 > Một trăm mười một ngàn lẻ một.
1.
import java.util.Scanner;
public class NumberToWords {
private static final String[] DON_VI = { "không", "một", "hai", "ba", "bốn", "năm", "sáu", "bảy", "tám", "chín" };
public static void main(String[] args) {
while (true) {
Scanner scanner = new Scanner(System.in);
System.out.print("Nhập vào số: ");
int number = scanner.nextInt();
System.out.println("Kết quả: " + convertNumberToWords(number));
}
}
public static String convertNumberToWords(int number) {
if (number == 0) {
return "không";
}
StringBuilder words = new StringBuilder();
while (number > 0) {
int digit = number % 10;
words.insert(0, DON_VI[digit] + " ");
number /= 10;
}
while (number < 0) {
int digit = -(number % 10);
words.insert(0, DON_VI[digit] + " ");
number /= 10;
if (number == 0) {
words.insert(0, "âm" + " ");
}
}
return words.toString().trim();
}
}2.
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
import java.util.Set;
public class NumberToWorlds {
public static void main(String[] args) {
Map<String, Integer> m = new HashMap<>();
m.put("không", 0);
m.put("một", 1);
m.put("hai", 2);
m.put("ba", 3);
m.put("bốn", 4);
m.put("năm", 5);
m.put("sáu", 6);
m.put("bảy", 7);
m.put("tám", 8);
m.put("chín", 9);
while (true) {
boolean firstNumber = true; // Biến đánh dấu số đầu tiên
boolean displayZero = false; // Biến đánh dấu xem có hiển thị số 0 không
NumberToWorlds test = new NumberToWorlds();
String[] y = test.nhapvaotubanphim();
for (int i = 0; i < y.length; i++) {
test.xuly(m, y[i], firstNumber, displayZero); // Truyền giá trị của biến đánh dấu vào phương thức xuly
if (firstNumber && m.get(y[i]) == 0) {
displayZero = false; // Nếu số đầu tiên là 0, không hiển thị số 0
} else {
displayZero = true; // Ngược lại, hiển thị số 0
firstNumber = false; // Đánh dấu rằng số đã không còn là số đầu tiên nữa
}
}
System.out.println(); // In ra dấu cách sau mỗi lần nhập
}
}
public String[] nhapvaotubanphim() {
Scanner scanner = new Scanner(System.in);
System.out.println("Nhập vào chữ số: ");
String x = scanner.nextLine();
String[] m = x.split("\\s");
return m;
}
public void xuly(Map<String, Integer> m, String n, boolean firstNumber, boolean displayZero) {
Set<String> keySet = m.keySet();
for (String key : keySet) {
if (n.equals(key)) {
if (displayZero || m.get(key) != 0) { // Hiển thị số khi biến displayZero là true hoặc giá trị của nó
// khác 0
System.out.print(m.get(key) + " ");
}
}
}
}
}3.a.
package lk;
import java.util.ArrayList;
import java.util.Scanner;
class Demo {
static String[] one_digit = { "không", "một", "hai", "ba", "bốn", "năm", "sáu", "bảy", "tám", "chín" };
static String[] units = { "", " mốt", " hai", " ba", " bốn", " lăm", " sáu", " bảy", " tám", " chín" };
static String[] tens = { "linh", "mười", "hai mươi", "ba mươi", "bốn mươi", "năm mươi", "sáu mươi", "bảy mươi",
"tám mươi", "chín mươi" };
static String[] hundreds = { "không trăm", "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" };
static String[] bigger = { "", " nghìn", " triệu", " tỉ", " nghìn tỉ", " triệu tỉ", " tỉ tỉ" };
static String read_class(String s) {
int n = Integer.parseInt(s);
String _hundreds = hundreds[n / 100];
String _tens = tens[(n / 10) % 10];
String _units = units[n % 10];
if (s.length() == 1)
return one_digit[n];
else if (n == 11)
return tens[n / 10] + " một";
else if (s.length() == 2)
return tens[n / 10] + _units;
else {
if (n == 111)
return _hundreds + " " + _tens + " một";
if (s.equals("000"))
return "";
else if ((n / 10) % 10 == 0) { // kiểm tra hàng chục có bằng 0 không
if (n % 10 == 0) // kiểm tra hàng đơn vị có bằng 0 không
return _hundreds;
else // hàng chục = 0 và hàng đơn vị khác 0
return _hundreds + " " + _tens + " " + one_digit[n % 10];
} else
return _hundreds + " " + _tens + _units;
}
}
public static String readNumber(String s) {
// Loại bỏ các số 0 đứng đầu
s = s.replaceFirst("^0+", "");
// Kiểm tra xem chuỗi đã bị loại bỏ hết số 0 và trở nên rỗng hay không
if (s.isEmpty()) {
s = "0";
}
ArrayList<String> classes = new ArrayList<String>();
boolean isNegative = false;
if (s.startsWith("-")) {
isNegative = true;
s = s.substring(1); // Loại bỏ dấu trừ
// Loại bỏ các số 0 đứng đầu
s = s.replaceFirst("^0+", "");
// Kiểm tra xem chuỗi đã bị loại bỏ hết số 0 và trở nên rỗng hay không
if (s.isEmpty()) {
s = "0";
}
}
String integerPart = s;
String decimalPart = "";
if (s.contains(".")) {
String[] parts = s.split("\\.");
integerPart = parts[0];
decimalPart = parts[1];
}
// xử lý phần nguyên
for (int i = integerPart.length() - 1; i > 1; i = i - 3)
classes.add(integerPart.substring(i - 2, i + 1));
if (integerPart.length() % 3 != 0)
classes.add(integerPart.substring(0, integerPart.length() % 3));
String res = "";
for (int i = 0; i < classes.size(); i++) {
String named_class = read_class(classes.get(i));
if (!named_class.equals(""))
res = named_class + bigger[i] + " " + res;
}
// xử lý phần thập phân
ArrayList<String> classes2 = new ArrayList<String>();
for (int i = decimalPart.length() - 1; i > 1; i = i - 3)
classes2.add(decimalPart.substring(i - 2, i + 1));
if (decimalPart.length() % 3 != 0)
classes2.add(decimalPart.substring(0, decimalPart.length() % 3));
String res2 = "";
for (int i = 0; i < classes2.size(); i++) {
String named_class2 = read_class(classes2.get(i));
if (!named_class2.equals(""))
res2 = named_class2 + bigger[i] + " " + res2;
}
//
if (isNegative) {
res = "âm " + res; // Thêm từ "âm" nếu số âm
}
if (!decimalPart.isEmpty()) {
res = res.trim() + " phẩy "+res2;
}
return res.trim();
}
public static void main(String args[]) {
while (true) {
Scanner scanner = new Scanner(System.in);
System.out.print("Nhập vào số: ");
String s = scanner.nextLine();
System.out.println(readNumber(s));
}
}
}
3.b.
import java.util.Scanner;
public class NumberToVietnamese {
private static String readGroup(String group) {
String[] readDigit = {" Không", " Một", " Hai", " Ba", " Bốn", " Năm", " Sáu", " Bảy", " Tám", " Chín" };
String temp = "";
if (group.equals("000")) return "";
// Read number hundreds
temp = readDigit[Integer.parseInt(group.substring(0, 1))] + " Trăm";
// Read number tens
if (group.substring(1, 2).equals("0")) {
if (!group.substring(2, 3).equals("0")) {
temp += " Lẻ" + readDigit[Integer.parseInt(group.substring(2, 3))];
return temp;
}
} else {
temp += readDigit[Integer.parseInt(group.substring(1, 2))] + " Mươi";
}
// Read number
if (group.substring(2, 3).equals("5")) {
temp += " Lăm";
} else if (!group.substring(2, 3).equals("0")) {
temp += readDigit[Integer.parseInt(group.substring(2, 3))];
}
return temp;
}
public static String readMoney(String num) {
if (num == null || num.equals("")) return "";
String temp = "";
// Length <= 18
while (num.length() < 18) {
num = "0" + num;
}
String g1 = num.substring(0, 3);
String g2 = num.substring(3, 6);
String g3 = num.substring(6, 9);
String g4 = num.substring(9, 12);
String g5 = num.substring(12, 15);
String g6 = num.substring(15, 18);
// Read group 1
if (!g1.equals("000")) {
temp = readGroup(g1);
temp += " Triệu";
}
// Read group 2
if (!g2.equals("000")) {
temp += readGroup(g2);
temp += " Nghìn";
}
// Read group 3
if (!g3.equals("000")) {
temp += readGroup(g3);
temp += " Tỷ";
} else if (!"".equals(temp)) {
temp += " Tỷ";
}
// Read group 4
if (!g4.equals("000")) {
temp += readGroup(g4);
temp += " Triệu";
}
// Read group 5
if (!g5.equals("000")) {
temp += readGroup(g5);
temp += " Nghìn";
}
// Read group 6
temp += readGroup(g6);
// Refine
temp = temp.replaceAll("Một Mươi", "Mười");
temp = temp.trim();
temp = temp.replaceAll("Không Trăm", "");
temp = temp.trim();
temp = temp.replaceAll("Mười Không", "Mười");
temp = temp.trim();
temp = temp.replaceAll("Mươi Không", "Mươi");
temp = temp.trim();
if (temp.indexOf("Lẻ") == 0) temp = temp.substring(2);
temp = temp.trim();
temp = temp.replaceAll("Mươi Một", "Mươi Mốt");
temp = temp.trim();
// Change case
return temp.substring(0, 1).toUpperCase() + temp.substring(1).toLowerCase() + " đồng";
}
public static void main(String[] args) {
while (true) {
Scanner scanner = new Scanner(System.in);
System.out.print("Nhập vào số: ");
String s = scanner.nextLine();
System.out.println(readMoney(s));
}
}
}3.c.
public static String transformNumber(String number) {
// test number = "1234567890";
if (number == null || number.trim().length() == 0)
return "";
int t, l = number.length();
t = l - 1;
String[] dv = new String[] { "nghin", "trieu", "ty", "nghi ty", "trieu ty" };
String[] tl = new String[] { "muoi", "tram" };
StringBuffer buffer = new StringBuffer();
for (int i = 0; i < l; i++) {
buffer.append(number.charAt(i)).append(" ");
int k = (t - 1) / 3;
if (k >= 0 && t > 0) {
if (t % 3 == 0)
buffer.append(dv[k]).append(" ");
else
buffer.append(tl[(t % 3) - 1]).append(" ");
--t;
}
}
number = buffer.toString();
// truong hop dc biet
number = number.replaceAll("muoi 0", "muoi").replaceAll("1 muoi 5", "muoi lam").replaceAll("1 muoi", "muoi").replaceAll("0 muoi", "le");
// thay so
number = number.replaceAll("1", "mot").replaceAll("2", "hai").replaceAll("3", "ba").replaceAll("4", "bon").replaceAll("5", "nam").replaceAll("6", "sau").replaceAll("7", "bay").replaceAll("8", "tam").replaceAll("9", "chin").replaceAll("0", "khong");
System.out.println("\n\n " + number + "\n\n");
return number;
}
Không có nhận xét nào:
Đăng nhận xét