首页 > 编程语言 >黑马程序员Java从入门到起飞(上) P103 字符串-08-较难练习练习-金额转换

黑马程序员Java从入门到起飞(上) P103 字符串-08-较难练习练习-金额转换

时间:2024-04-05 16:32:31浏览次数:38  
标签:tmp arr Java 查表 int 08 练习 sb 数字

文章目录


标题:黑马程序员Java从入门到起飞(上) P103 字符串-08-较难练习练习-金额转换

前言

今天做了这个小练习,分享给大家
原视频链接 P103 字符串-08-较难练习练习-金额转换


提示:以下是本篇文章正文内容

一、案例的使用场景是什么?

使用场景
如图,对于收据中的金额2135,我们如何通过程序把它转换成为大写汉字的样子呢?

二、输入输出情况

输入:接受用户输入一个7位以内的数字
输出:用户输入的数字的大写汉字表示
例如:
输入: 2135
输出:零佰零拾零万贰仟壹佰叁拾伍元

三、思路

注意:我的思路和视频中老师讲解的有一些不同
大体思路分为如下几步

  1. 依次获取到输入整数的每一位数字,并从后往前存入数组当中
  2. 利用查表法获取对应每一位数字的单位以及大写字母表示
  3. 将上面的内容拼接,获得结果

四、什么是查表法?

查表法
如图所示,我们可以通过数组存放一些信息,在这个案例中,0对应大写的汉字是零,1对应的大写汉字是壹,不难发现,我们可以把数字当做索引,去数组中找到这个数字本身对应的大写汉字表示。
这里的其实就是这个数组。

五、代码实现

1.获取到每一位数字,并存放到长度为7的数组当中(因为本练习要求的数字长度小于等于7即可)

private static StringBuilder getSb(int number) {
		//1.创建数组,存放每一位数
        int[] arr = new int[7];
        //2.获取到每一位数,并存放到数组当中
        //临时变量tmp,防止修改number本身
        int tmp = number;
        //这里定义了索引Index用于从后向前存放数字,每存放一个,index就自减,向前移动
        int index = arr.length - 1;
        while (tmp > 0) {
            int ge = tmp % 10;
            arr[index] = ge;
            index--;
            tmp = tmp / 10;
        }
        System.out.println(Arrays.toString(arr));
}

这里利用StringBuilder进行字符串拼接

//3.利用查表法对应大写汉字的数字
        char[] chs = {'零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖'};
        //3.利用查表法对应的单位
        char[] chs2 = {'佰', '拾', '万', '仟', '佰', '拾', '元'};
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < arr.length; i++) {
            //对应的大写数字
            char num = chs[arr[i]];
            //4.拼接字符串
            sb.append(num);
            sb.append(chs2[i]);
        }
        return sb;

六、完整代码

package com.itheima.stringdemo;

import java.util.Arrays;
import java.util.Scanner;

public class StringDemo6 {
    public static void main(String[] args) {
     	//接收用户输入数据
        Scanner sc = new Scanner(System.in);
        System.out.print("请输入一个金额:");
        int number = sc.nextInt();
        StringBuilder sb = getSb(number);
        //遍历输出
        for (int i = 0; i < sb.length(); i++) {
            char c = sb.charAt(i);
            //带颜色的输出(只是为了打印出来更好看一些)
            //格式:System.out.format("\33[字体颜色数字;背景颜色数字;字体格式要输出的内容%n");
            if (i % 2 == 0) {
                //31是红色
                System.out.format("\33[31;2m%c", c);
            } else {
                //30是黑色
                System.out.format("\33[30;2m%c", c);
            }
        }
    }

    private static StringBuilder getSb(int number) {
        //1.创建数组,存放每一位数
        int[] arr = new int[7];
        //2.获取到每一位数,并存放到数组当中
        int tmp = number;
        int index = arr.length - 1;
        while (tmp > 0) {
            int ge = tmp % 10;
            arr[index] = ge;
            index--;
            tmp = tmp / 10;
        }
        //System.out.println(Arrays.toString(arr));
        //3.利用查表法对应大写汉字的数字
        char[] chs = {'零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖'};
        //3.利用查表法对应的单位
        char[] chs2 = {'佰', '拾', '万', '仟', '佰', '拾', '元'};
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < arr.length; i++) {
            //对应的大写数字
            char num = chs[arr[i]];
            //4.拼接字符串
            sb.append(num);
            sb.append(chs2[i]);
        }
        return sb;
    }
}

总结

查表法是常用的一个小方法
对于Java新手,需要多多练习才能掌握的更好
字符串在以后的开发中会经常用到,要熟练掌握一些基本操作。

标签:tmp,arr,Java,查表,int,08,练习,sb,数字
From: https://blog.csdn.net/qq_73320062/article/details/137401586

相关文章

  • JavaScript不建议直接声明undefined的原因,极致的严谨和仔细
    前言:很多人写JavaScript代码时习惯用vara=undefined这种写法,其实这种写在某种情况下会产生意想不到的bug,又或者说undefined本身就是JavaScript的一个bug??为什么这么说呢,因为undefined它应该是关健字才合理的,但undefined在JavaScript里面压根就不是关健字,它是window......
  • java计算机毕业设计(附源码)优乐帮育儿系统(ssm+mysql+maven+LW文档)
    本系统(程序+源码)带文档lw万字以上  文末可领取本课题的JAVA源码参考系统程序文件列表系统的选题背景和意义选题背景:在当今社会,随着生活节奏的加快和社会竞争的日益激烈,父母面临着巨大的育儿压力。育儿不再仅仅是满足孩子的基本生理需求,更涉及到心理、教育、健康等多方面......
  • java计算机毕业设计(附源码)优书校园平台(ssm+mysql+maven+LW文档)
    本系统(程序+源码)带文档lw万字以上  文末可领取本课题的JAVA源码参考系统程序文件列表系统的选题背景和意义选题背景:在信息技术飞速发展的今天,教育领域亦紧跟时代步伐,逐渐实现数字化转型。传统的教育资源分配和学习方式正面临着重大的变革,其中,优书校园平台作为这一转型的......
  • Java中常用的加密算法及其实现原理详解(二)
    本系列文章简介:        随着互联网的快速发展,信息的安全保护愈发重要。在软件开发中,加密算法被广泛应用于数据的加密和解密过程中,以保护敏感信息的机密性和完整性。Java作为一种广泛应用于企业级开发的编程语言,也提供了丰富的加密算法库。        本文将介绍......
  • 深入探究Hibernate:优雅、强大的Java持久化框架(二)
    本系列文章简介:        作为一个优雅而强大的Java持久化框架,Hibernate为开发人员提供了一个简单且高效的方式来处理对象关系映射(ORM)。无论您是一个经验丰富的Hibernate开发者还是一个新手,本系列文章都将带您深入了解Hibernate的内部工作原理和使用技巧。      ......
  • 简单讲讲你对 Java 中的异常的理解?
    Java中的异常都来自于java.lang.Throwable类,从异常类型上分,Java中的异常可以分为Exception和Error。Exception异常可以被程序本身处理,Error无法被程序处理。Exception异常又可以分为受检查异常和不受检查异常,所谓受检查异常是指那些在编程期间就需要把异常try/catc......
  • 二叉树计算【华为OD机试JAVA&Python&C++&JS题解】
    一.题目-二叉树计算给出一个二叉树如下图所示:6/79\/-26请由该二叉树生成一个新的二叉树,它满足其树中的每个节点将包含原始树中的左子树和右子树的和。20(7-2+9+6)/\-26\/......
  • 学生重新排队【华为OD机试JAVA&Python&C++&JS题解】
    一.题目-学生重新排队n个学生排成一排,学生编号分别是1到n,n为3的整倍数。老师随机抽签决定将所有学生分成m个3人的小组,n=3*m为了便于同组学生交流,老师决定将小组成员安排到一起,也就是同组成员彼此相连,同组任意两个成员输入描述:之间无其它组的成员。因此老师决定调整队伍,......
  • [附源码]JAVA计算机毕业设计二手球鞋交易(源码+开题)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着近年来运动文化的兴起,球鞋文化逐渐成为了年轻人追求时尚与个性的重要标志。二手球鞋市场应运而生,并呈现出蓬勃发展的态势。然而,二手球鞋交易市场......
  • [附源码]JAVA计算机毕业设计二手汽车交易网站(源码+开题)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着经济的持续发展和人们生活水平的提高,汽车已经从奢侈品转变为日常消费品,越来越多的人加入到购车大军中。然而,传统的汽车交易方式往往存在信息不对......