如果输入的是中文数字,输出阿拉伯数字。

可以使用Scanner类从键盘输入数字,然后使用if语句判断输入的数字是阿拉伯数字还是中文数字,然后分别进行转换输出即可。

以下是示例代码:

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入数字:");
        String input = scanner.next();

        if (isArabicNumber(input)) {
            int num = Integer.parseInt(input);
            String chineseNumber = convertToChineseNumber(num);
            System.out.println("中文数字:" + chineseNumber);
        } else if (isChineseNumber(input)) {
            int arabicNumber = convertToArabicNumber(input);
            System.out.println("阿拉伯数字:" + arabicNumber);
        } else {
            System.out.println("输入错误!");
        }
    }

    // 判断是否是阿拉伯数字
    public static boolean isArabicNumber(String input) {
        String regex = "[0-9]+";
        return input.matches(regex);
    }

    // 判断是否是中文数字
    public static boolean isChineseNumber(String input) {
        String regex = "[零一二三四五六七八九十百千万]+";
        return input.matches(regex);
    }

    // 将阿拉伯数字转换为中文数字
    public static String convertToChineseNumber(int num) {
        String[] chineseNumbers = {"零", "一", "二", "三", "四", "五", "六", "七", "八", "九", "十", "百", "千", "万"};
        String chineseNumber = "";
        if (num == 0) {
            chineseNumber = chineseNumbers[0];
        } else {
            int unitIndex = 0; // 单位索引
            while (num > 0) {
                int digit = num % 10;
                if (digit != 0) {
                    chineseNumber = chineseNumbers[digit] + chineseNumbers[unitIndex] + chineseNumber;
                } else {
                    if (chineseNumber.length() > 0 && !chineseNumber.startsWith("零")) {
                        chineseNumber = chineseNumbers[digit] + chineseNumber;
                    }
                }
                unitIndex++;
                num /= 10;
            }
        }
        return chineseNumber;
    }

    // 将中文数字转换为阿拉伯数字
    public static int convertToArabicNumber(String chineseNumber) {
        int num = 0;
        int unit = 0; // 单位
        String[] chineseNumbers = {"零", "一", "二", "三", "四", "五", "六", "七", "八", "九"};
        String[] units = {"十", "百", "千", "万"};

        for (int i = chineseNumber.length() - 1; i >= 0; i--) {
            char c = chineseNumber.charAt(i);
            int digit = getChineseNumberDigit(c, chineseNumbers);
            if (digit != -1) {
                num += digit * Math.pow(10, unit);
            } else {
                int unitIndex = getChineseNumberUnitIndex(c, units);
                if (unitIndex != -1) {
                    if (unitIndex == 0) {
                        num += 1 * Math.pow(10, unit);
                    } else {
                        num += getChineseNumberDigit(chineseNumber.charAt(i - 1), chineseNumbers) * Math.pow(10, unit);
                        i--;
                    }
                    unit += unitIndex + 1;
                }
            }
        }

        return num;
    }

    // 获取中文数字字符对应的数字
    public static int getChineseNumberDigit(char c, String[] chineseNumbers) {
        for (int i = 0; i < chineseNumbers.length; i++) {
            if (c == chineseNumbers[i].charAt(0)) {
                return i;
            }
        }
        return -1;
    }

    // 获取中文数字字符对应的单位索引
    public static int getChineseNumberUnitIndex(char c, String[] units) {
        for (int i = 0; i < units.length; i++) {
            if (c == units[i].charAt(0)) {
                return i;
            }
        }
        return -1;
    }
}
``
用java从键盘输入阿拉伯数字或者中文数字如果输入的是阿拉伯数字输出中文数字反之

原文地址: https://www.cveoy.top/t/topic/g2of 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录