我是靠谱客的博主 缥缈小笼包,最近开发中收集的这篇文章主要介绍算法--java字符串之金额转换,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

如例

输入  2135 ,==》输出 零佰零拾零万贰仟壹佰叁拾伍元

输入 789 ,==》输出 零佰零拾零万零仟柒佰捌拾玖元

分析

1、当输入2135时,我们可以先将其数字全部转换为大写 ->贰壹叁伍

2、在 贰壹叁伍 前面补零 ->零零零贰壹叁伍

3、将单位  佰拾万仟佰拾元 和 2  中对应已经转换为大写的对应位置进行拼接,比如 '佰'插入到 '零' 后面,以此类推, 后面的 '贰壹叁伍' 后面分别插入 '仟佰拾元'

代码演示

1、进行输入操作,并进行判断是否超过七位数或者输入的数为负数,或输入不合法的数。

while(true){
    Scanner sc = new Scanner(System.out);
    System.out.println("输入数字:");
    number = sc.nextInt();
    if(number >= 0 && number <= 999999){
        break;
    }else{
        System.out.println("输入无效!");
     }
}

 2、定义一个方法 getCapitalNumber 用来将数字转换为对应的大写。

public static String getCapitalNumber(int number){
    String[] str = {"零", "壹", "贰", "叁", "肆", "伍", "陆","柒","捌","玖"};
    return str[number];
}

3、数字转换为大写的过程

numberStr = "";
while(true){
    ge = number % 10;//取到输入金额的最后一位数字
    String capitalNumber = getCapitalNumber(ge);//将金额的最后一位数字传入getCapitalNumber()方法中,转换为对应的大写
    numberStr = capitalNumber + numberStr;//转换为大写后的数字进行拼接
    number = number / 10;
    //结束条件 --数字遍历完
    if(number == 0){
        break;
    }
    
}

4、在转换为大写后,不足七位的要在前面补零,零的个数为 7- (输入金额的位数)。

int count = 7 - numberStr.length();

for(int i = 0; i < count; i++){
    numberStr = "零" + numberStr;
}

5、将单位与对应的大写数字拼接

String result = "";
String[] arr = {"佰","拾","万","仟","佰","拾","元"};
for(int i = 0; i < numberStr; i++){
    char c = numberStr.charAt(i);
    result = result + c + arr[i];
}

6、放入完整的代码。

package string;

import java.util.Scanner;

public class stringdemo5 {
    public static void main(String[] args) {
        int number;
        String numberStr = "";
        //判断输入的是否正确
        while (true){
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入:");
            number = sc.nextInt();
            if(number >=0 && number <= 9999999) {
                break;
            }else{
                System.out.println("金额无效!");
            }
        }

        //将输入的数字逐个转换为大写
        while(true){
            int ge = number % 10;
            String capitalNumber = getCapitalNumber(ge);
            numberStr = capitalNumber + numberStr;
            number = number / 10;
            if(number == 0){
                break;
            }
        }
//        System.out.println(numberStr);

        //前面补零
        int count = 7-numberStr.length();
        for(int i = 0;i < count; i++){
            numberStr = "零" + numberStr;
        }
//        System.out.println(numberStr);

        //插入单位
        String result = "";
        String[] arr ={"佰","拾","万","仟","佰","拾","元"};

        for (int i = 0; i < numberStr.length(); i++) {
            char c = numberStr.charAt(i);
            result = result + c + arr[i];
        }
        System.out.println(result);

    }
    //小写转换为大写
    public static String getCapitalNumber(int number){
        String[] str = {"零", "壹", "贰", "叁", "肆", "伍", "陆","柒","捌","玖"};
        return str[number];
    }
}

最后

以上就是缥缈小笼包为你收集整理的算法--java字符串之金额转换的全部内容,希望文章能够帮你解决算法--java字符串之金额转换所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(35)

评论列表共有 0 条评论

立即
投稿
返回
顶部