IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> Java编程练习Day11--》格式化字符串 -> 正文阅读

[Java知识库]Java编程练习Day11--》格式化字符串

Java编程练习Day11–》格式化字符串

把数字格式化为货币字符串


实例说明

数字可以标识货币,百分比,积分,电话号码等,就货币而言,在不同国家会以不同的格式来定义。本实例将接受用户输入的数字,然后再控制台中输出其货币形式,其中使用了不同国家的货币形式。

本实例使用NumberFormat类实现了数字格式化,这个类是一个抽象类,但是可以通过其静态方法获取内部实现类的实例对象,本实例获取了货币格式的格式化对象。使用的方法声明如下:

public static NumberFormat getCurrencyInstance(Locale inLocale)
该方法用于获取NumberFormat类的货币格式对象
参数说明
inLocale: 指定语言环境

public final String format(double number)
该方法是格式化对象中的方法,用于执行对数字的格式化操作。就本实例来说,这个方法执行的是把数字格式化为货币字符串。
参数说明
number: 要被格式化的数字

测试代码


import java.text.NumberFormat;
import java.util.Locale;
import java.util.Scanner;

/**
 * @author nanqi-code
 * @create 2021/8/28-16:42
 */
public class FormatNumber {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);//创建标准输入流扫描器
        System.out.println("请输入一个数字:");
        double number = scanner.nextDouble();//获取用户输入的数字
        System.out.println("该数字用Locale类的以下常量作为格式化对象的构造参数,将获得不同的货币格式:");
        //创建格式化对象
        NumberFormat format = NumberFormat.getCurrencyInstance(Locale.CHINA);
        //输出格式化货币格式
        System.out.println("Locale.CHINA:"+format.format(number));
        format = NumberFormat.getCurrencyInstance(Locale.US);
        System.out.println("Locale.US:"+format.format(number));
        format = NumberFormat.getCurrencyInstance(Locale.ENGLISH);
        System.out.println("Locale.ENGLISH:"+format.format(number));

    }
}

运行结果

在这里插入图片描述

格式化当前日期


实例说明

日期字符串的格式因语言环境而不同,国际化的程序必须考虑程序在不同语言环境中的应用。所以提供一个格式化类就非常必要了。Java的java.text包中提供了DateFormat类,通过该类实现了几个不同语言环境的日期格式化输出。

DateFormat类,位于Java.text包中,是一个抽象类,不能被实例化,但是它提供了一些静态方法来获取实现类的实例对象。下面介绍本实例如何获取DateFormat类的对象和如何进行格式化。

获取日期格式器
public static final DateFormat getDateInstance(int style,Locale aLocale)
该方法用于获取指定样式和语言环境的日期格式化器对象。
参数说明:
style: 指定格式器对象对日期使用的格式化样式,可选值有SHORT(使用数字),LONG(比较长的描述),FULL(完整格式).
aLocale: 格式器使用的语言环境对象。

日期格式化
public final String format(Date date)
该方法将一个日期对象格式化为指定格式的字符串。
参数说明:
date: 日期类的实例对象。

测试代码


import java.text.DateFormat;
import java.util.Date;
import java.util.Locale;

/**
 * @author nanqi-code
 * @create 2021/8/28-17:00
 */
public class FormatDate {
    public static void main(String[] args) {
        Date date = new Date();
        DateFormat format = DateFormat.getDateInstance(DateFormat.FULL, Locale.CHINA);
        //中国日期
        String str = format.format(date);
        System.out.println("中国日期:\t"+str);
        //加拿大日期
        format = DateFormat.getDateInstance(DateFormat.FULL,Locale.CANADA);
        str = format.format(date);
        System.out.println("加拿大日期:\t"+str);
        //法国日期
        format = DateFormat.getDateInstance(DateFormat.FULL,Locale.FRANCE);
        str = format.format(date);
        System.out.println("法国日期:\t"+str);
        //德国日期
        format = DateFormat.getDateInstance(DateFormat.FULL,Locale.GERMAN);
        str = format.format(date);
        System.out.println("德国日期:\t"+str);
        //意大利日期
        format = DateFormat.getDateInstance(DateFormat.FULL,Locale.ITALIAN);
        str = format.format(date);
        System.out.println("意大利日期:\t"+str);
    }
}

运行结果

在这里插入图片描述

货币金额大写格式


实例说明

在处理财务账款时,一般需要大写金额。如进行转账时,需要将转账金额写成大写金额。也就是说,如果要转账567894321.00元,则需要写成“伍亿陆仟柒佰捌拾玖万肆仟叁佰贰拾元整”。对于这种情况,如果手动填写不仅麻烦,而且容易出错,所以常常需要通过程序控制自动进行转换。

设计思想

1.将数字格式化,如果存在小数部分,将其转换为3位小数到单位厘
2.分别将整数部分与小数部分转换为大写方式,并插入其单位(亿,万,仟······)
3.组合转换后的整数部分与小数部分

测试代码


import java.text.DecimalFormat;
import java.util.Scanner;

/**
 * @author nanqi-code
 * @create 2021/8/28-17:16
 */
public class ConvertMoney {
    static String[] STR_UNIT ={"","拾","佰","仟","万","拾","百","仟","亿","拾","佰","仟"};
    static String[] STR_NUMBER = {"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
    static String[] STR_UNIT1 = {"角","分","厘"};
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入一个金额:");
        //获取金额转换后的字符串
        String convert = convert(scanner.nextDouble());
        System.out.println(convert);//输出转换结果
    }

    public static String convert(double d){
        //实例化DecimalFormat对象
        DecimalFormat df = new DecimalFormat("#0.###");
        //格式化double数字
        String strNum = df.format(d);
        //判断是否包含小数点
        if(strNum.indexOf(".")!=-1){
            String num = strNum.substring(0,strNum.indexOf("."));
            //整数部分大于12不能转换
            if(num.length()>12){
                System.out.println("数字太大,不能完成转换!");
                return "";
            }
        }
        String point = "";//小数点
        if(strNum.indexOf(".")!=-1){
            point = "元";
        }else{
            point = "元整";
        }
        String result = getInteger(strNum) + point + getDecimal(strNum);
        return result;
    }

    public static String getInteger(String num){
        //判断是否包含小数点
        if(num.indexOf(".")!=-1){
            num = num.substring(0,num.indexOf("."));//提取整数部分
        }
        num = new StringBuffer(num).reverse().toString();//反转字符串
        StringBuffer temp = new StringBuffer();//创建一个StringBuffer对象
        for (int i = 0; i < num.length(); i++) {//加入单位
            temp.append(STR_UNIT[i]);
            temp.append(STR_NUMBER[num.charAt(i)-48]);//将字符转换成数字
        }
        num = temp.reverse().toString();//反转字符串
        //替换字符串的字符
        num = numReplace(num,"零拾","零");
        num = numReplace(num,"零佰","零");
        num = numReplace(num,"零仟","零");
        num = numReplace(num,"零万","万");
        num = numReplace(num,"零亿","亿");
        num = numReplace(num,"零零","零");
        num = numReplace(num,"亿万","亿");

        //如果字符串以零结尾将其去除
        if(num.lastIndexOf("零")==num.length()-1){
            num = num.substring(0,num.length()-1);
        }
        return num;
    }

    public static String getDecimal(String num) {
        //判断是否包含小数点
        if(num.indexOf(".")!=-1){
            num = num.substring(num.indexOf(".")+1,num.length());//提取小数部分
        }
        StringBuffer temp = new StringBuffer();//创建一个StringBuffer对象
        for (int i = 0; i < num.length(); i++) {//加入单位
            temp.append(STR_NUMBER[num.charAt(i)-48]);
            temp.append(STR_UNIT1[i]);
        }
        num = temp.toString();
        //替换字符串的字符
        num = numReplace(num,"零角","零");
        num = numReplace(num,"零分","零");
        num = numReplace(num,"零厘","零");
        num = numReplace(num,"零零","零");
        //如果字符串以零结尾将其去除
        if(num.endsWith("零")){
            num = num.substring(0,num.length()-1);
        }
        return num;
    }

    public static String numReplace(String num,String a,String b){
        while(true){
            if(num.indexOf(a)!=-1){
                num.replaceAll(a, b);
            }else{
                break;
            }
        }
        return num;
    }


}

运行结果

在这里插入图片描述

往日精彩

Java编程练习Day10–》数组排序与查询02
Java编程练习Day09–》数组排序与查询01
Java编程练习Day08
Java编程练习Day07
Java编程练习Day06
Java编程练习Day05
Java编程练习Day04
Java编程练习Day03
Java编程练习Day02
Java编程练习Day01

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-08-29 08:57:09  更:2021-08-29 08:57:34 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 13:22:07-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码