1. 综合练习

题目 1 :金额转换为中文大写格式

请编写一个 Java 程序,实现将数字金额转换为中文大写格式(带单位)的功能,具体要求如下:

(1) 程序接收用户输入的一个整数金额(范围:0-9999999),如果输入金额超出范围,提示 "金额无效" 并要求重新输入

(2) 转换规则:

  • 将数字转换为中文大写形式(零、壹、贰... 玖)
  • 为每一位数字添加对应的单位,单位顺序为:["佰","拾","万","仟","佰","拾","元"]
  • 不足 7 位的金额需要在高位补 "零",确保总长度为 7 位(例如 123 应补为 7 位:零零零零壹贰叁)

(3) 输出最终的中文大写金额字符串,示例如下:

  • 输入:123

  • 输出:零佰零拾零万零仟壹佰贰拾叁元

  • 输入:1000000

  • 输出:壹佰零拾零万零仟零佰零拾零元

public class test8 {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int money;while (true) {System.out.println("请录入一个金额");money = sc.nextInt();  //不太理解,作用域问题if (money >= 0 && money <= 9999999){break;} else{System.out.println("金额无效");}}String moneyStr = "";while (money != 0 ){int ge = money % 10;String capitalNumber = getCapitalNumber(ge);moneyStr = capitalNumber + moneyStr;  //不太理解money = money / 10;}int count = 7 - moneyStr.length();for (int i = 0; i < count; i++) {moneyStr = "零" + moneyStr;  //不太理解}String[] arr = {"佰","拾","万","仟","佰","拾","元"};String result = "";for (int i = 0; i < moneyStr.length(); i++) {char c = moneyStr.charAt(i);result = result + c + arr[i];}System.out.println(result);}public static String getCapitalNumber(int number){String[] arr = {"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};return arr[number];}
}

关键逻辑:

① moneyStr = capitalNumber + moneyStr; 这种拼接方式相当于每次把新取到的高位数字放在前面,最终得到正确的顺序(从高位到低位)。

  • 这行代码的作用是将数字的大写形式按正确顺序拼接,解决了原代码中顺序颠倒的问题,举例说明:假设输入金额是 123
  • 第一次循环:取到个位 3capitalNumber是 "叁",moneyStr变为 "叁"
  • 第二次循环:取到十位 2capitalNumber是 "贰",moneyStr变为 "贰" + "叁" = "贰叁"
  • 第三次循环:取到百位 1capitalNumber是 "壹",moneyStr变为 "壹" + "贰叁" = "壹贰叁"

② 变量的作用域:

int money;
while (true) {System.out.println("请录入一个金额");money = sc.nextInt();  //不太理解,作用域问题if (money >= 0 && money <= 9999999){break;} else{System.out.println("金额无效");}
}
  • 在 Java 中,在循环内部声明的变量(如int money = ...,其作用域仅限于这个循环内部。
  • 当循环结束后,这个变量就会被销毁,循环外部的代码(如后续的数字转大写逻辑)无法再使用它,因此会出现找不到符号"money"的编译错误。

(2) 题目:手机号中间四位脱敏

请编写一个 Java 程序,实现对手机号的中间四位进行脱敏处理(替换为 * ),具体要求如下:

(1) 定义一个 11 位的手机号字符串(例如:"13528834382")。

(2) 截取手机号的前 3 位和后 4 位。

(3) 将前 3 位 + "****" + 后 4 位拼接,得到脱敏后的手机号。

(4) 输出脱敏结果。

示例:
输入(程序中定义):"13500004382"
输出:"135****4382"

public class test9 {public static void main(String[] args) {String phoneNumber = "13528834382";String start = phoneNumber.substring(0,3);String end = phoneNumber.substring(7);  //不太理解String result = start + "****" + end;System.out.println(result);}
}

关键逻辑:

① substring(int beginIndex, int endIndex)

(1) 作用:截取从 beginIndex(包含)到 endIndex(不包含)之间的子串,返回新字符串。

(2) 参数说明

  • beginIndex起始索引(包含此位置的字符)
  • endIndex结束索引(不包含此位置的字符),即截取范围是 [beginIndex, endIndex)

② substring(int beginIndex)

  • 作用:从字符串的 beginIndex(起始索引)位置开始,截取到字符串的末尾,返回一个新的子串。

2. StringBuilder

方法名说明
public StringBuilder()创建一个空白可变的字符串对象,不包含任何内容
public StringBuilder(String str)根据字符串的内容,来创建可变字符串对象
public StringBuilder append(任意类型)添加数据,并返回对象本身
public StringBuilder reverse()反转容器中的内容
public int length()返回字符串长度
public String toString()通过 toString 可以把 StringBuilder 转化成 String

(1) 综合练习

编程题目:判断字符串是否为对称字符串

题目描述
请编写一个 Java 程序,实现判断用户输入的字符串是否为对称字符串(即回文串)。对称字符串是指从左到右读和从右到左读完全相同的字符串,例如 "abcba"、"aaa" 是对称字符串,而 "abc"、"abbaa" 不是对称字符串。

要求

  • 程序需通过键盘接收用户输入的一个字符串(假设输入不包含空格)
  • 使用字符串反转的方式判断该字符串是否为对称字符串
  • 输出判断结果,格式为:"当前字符串是对称字符串" 或 "当前字符串不是对称字符串"
public class test2 {public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.println("请输入一个字符串");String str = sc.next();String result = new StringBuilder().append(str).reverse().toString();  //不太理解if (str.equals(result)) {System.out.println("当前字符串是对称字符串");} else{System.out.println("当前字符串不是对称字符串");}}
}

① reverse() 方法

  • 定义StringBuilder 和 StringBuffer 中的 reverse() 是无参数方法(方法声明为 public StringBuilder reverse()

  • 结论:括号里不能添加任何参数,否则会编译错误

② toString() 方法

  • 大多数情况下toString() 也是无参数方法(例如 StringBuilderObject 类中的定义都是 public String toString()),此时括号里不能加参数。

3. Stringjoiner

构造方法2+成员方法3:

方法名说明
public StringJoiner(间隔符号)创建一个 StringJoiner 对象,指定拼接时的间隔符号
public StringJoiner(间隔符号,开始符号,结束符号)创建一个 StringJoiner 对象,指定拼接时的间隔符号、开始符号、结束符号
public StringJoiner add(添加的内容)添加数据,并返回对象本身,支持链式调用
public int length()返回拼接后最终字符串的长度(字符出现的个数)
public String toString()返回拼接形成的最终字符串

4. 字符串原理

(1) 内存原理

  • 直接赋值会复用字符串常量池中的·

  • new出来不会复用,而是开辟一个新的空间

(2) 字符串拼接原理

  • 拼接无变量 ,编译后就是拼接后的结果,会复用串池里的字符串

  • 拼接有变量 , 每一行拼接的代码,都会在内存中创建心得字符串,浪费空间资源

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/919951.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/919951.shtml
英文地址,请注明出处:http://en.pswp.cn/news/919951.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

云原生俱乐部-k8s知识点归纳(5)

写到这里&#xff0c;k8s的内容已经到一半了&#xff0c;虽然后面的内容我觉得更加玄学一点。控制器真的是个神奇的东西&#xff0c;虽然后面的CRD会带着大家一起做一个控制器&#xff0c;但是还是觉得很奇妙。控制器大概就是k8s中的精华了&#xff0c;通过控制器去监听k8s中ap…

C++复习2

C继承 继承的概念 继承&#xff08;inheritance&#xff09;机制是面向对象程序设计使代码可以复用的重要的手段&#xff0c;它允许程序员在保持原有类特性的基础上进行扩展&#xff0c;增加功能&#xff0c;这样产生新的类&#xff0c;称为派生类。 继承呈现了面向对象程序设计…

ZKmall模块商城的跨境电商支付安全方案:加密与权限的双重防护

跨境电商支付环节面临双重挑战&#xff1a;一方面&#xff0c;不同国家的支付协议、货币结算规则差异显著&#xff0c;需满足多币种、多渠道的支付需求&#xff1b;另一方面&#xff0c;跨境数据传输的安全性与操作权限的严格管控直接关系到资金安全与合规性。ZKmall 模块商城针…

【数据结构】-5- 顺序表 (下)

一、集合框架 这是 Java 集合框架&#xff08;Java Collections Framework&#xff09;的核心继承关系树状图1. 最顶层&#xff1a;Iterable&#xff08;接口&#xff09;作用&#xff1a;所有 “可迭代” 的集合&#xff08;如 List、Set、Queue&#xff09;都必须实现它&…

最大连续1的个数Ⅲ-滑动窗口

1004. 最大连续1的个数 III - 力扣&#xff08;LeetCode&#xff09; Solution 标准滑动窗口。 class Solution { public:int longestOnes(vector<int>& nums, int k) {int nnums.size();int l0,z_cnt0,ans0;for(int r0;r<n;r){z_cnt1-nums[r];while(z_cnt>k…

实验二 Cisco IOS Site-to-Site Pre-share Key

一 实验设备 1、 CISCO 路由器 2 台 二 实验拓扑图 三 实验配置 1、 R1 路由器上连通性配置 R1(config)#interface e0/0 R1(config-if)#ip address 192.168.1.2 255.255.255.0 R1(config-if)#no shutdown R1(config)#interface e1/0 R1(config-if)#ip address 10.1.20.1 255.25…

深入理解 Rust Axum:两种依赖注入模式的实践与对比(二)

前言 我想把使用 Rust 开发Websocket 服务的文章写成一个系列&#xff0c;前面写了一遍如何使用 Axum 搭建一个Websocket 服务的文章&#xff0c;我们可以和前端demo页面进行全双工的 Websocket 消息传输&#xff0c;而且可以启用 HTTP2 的同时启用 TLS。 这时候问题来了&…

syn与quote的使用——结构体转create语句

前言 syn和quote的简单使用——生成结构体-CSDN博客https://blog.csdn.net/qq_63401240/article/details/150609865?spm1001.2014.3001.5501 前面使用syn和quote&#xff0c;发现挺好玩的&#xff0c;感觉可以干很多事情&#xff0c;不愧是Rust中的宏。 宏分为声明宏和过程…

集中式负载均衡 vs. 分布式负载均衡

集中式负载均衡 vs. 分布式负载均衡负载均衡&#xff08;Load Balancing&#xff09;是任何可伸缩系统的“交通警察”。 集中式负载均衡&#xff08;Centralized LB&#xff09;与分布式负载均衡&#xff08;Distributed LB&#xff09;代表了两种截然不同的“指挥哲学”&#…

【机器学习】9 Generalized linear models and the exponential family

本章目录 9 Generalized linear models and the exponential family 281 9.1 Introduction 281 9.2 The exponential family 281 9.2.1 Definition 282 9.2.2 Examples 282 9.2.3 Log partition function 284 9.2.4 MLE for the exponential family 286 9.2.5 Bayes for the e…

EndNote 2025 Mac 文献管理工具

原文地址&#xff1a;EndNote 2025 Mac 文献管理工具 EndNote mac版一款文献管理工具&#xff0c;支持国际期刊的参考文献格式有3776种&#xff0c;写作模板几百种&#xff0c;涵盖各个领域的杂志。 EndNote mac不仅仅局限于投稿论文的写作&#xff0c;对于研究生毕业论文的写…

openEuler系统中home文件夹下huawei、HwHiAiUser、lost+found 文件夹的区别和作用

在 openEuler 系统的 /home 目录下出现的 huawei、HwHiAiUser 和 lost+found 文件夹,分别对应不同的功能和用途,具体区别和作用如下: 1. lost+found 文件夹 通用 Linux 系统文件夹:lost+found 是所有 Linux 系统(包括 openEuler)中默认存在的文件夹,并非 openEuler 特有…

Electron 核心 API 全解析:从基础到实战场景

Electron 凭借丰富的 API 体系&#xff0c;让前端开发者能轻松调用系统级能力。本文将系统梳理 Electron 核心 API 的分类、使用场景及实战示例&#xff0c;帮你快速掌握从窗口管理到进程通信的全场景开发。 一、主进程核心 API&#xff08;Main Process&#xff09; 主进程是…

创建线程的方式有哪些?

1. 创建线程的方式有哪些?继承Thread类实现runnable接口实现Callable接口线程池创建线程(项目中使用方式)2. runnable 和 callable 有什么区别?Runnable接口run方法没有返回值Callable接口call方法有返回值,需要FutureTask获取结果Callable接口的call()方法允许抛出异常;而Ru…

More Effective C++ 条款05: 谨慎定义类型转换函数

More Effective C 条款05&#xff1a;谨慎定义类型转换函数核心思想&#xff1a;C中的隐式类型转换虽然方便&#xff0c;但容易导致意外的行为和维护难题。应当通过explicit关键字和命名转换函数等方式严格控制类型转换&#xff0c;优先使用显式转换而非隐式转换。 &#x1f68…

基于springboot的理商管理平台设计与实现、java/vue/mvc

基于springboot的理商管理平台设计与实现、java/vue/mvc

Flask蓝图:模块化开发的利器

蓝图为什么要使用蓝图模块化组织&#xff1a;将应用分解为可重用的模块&#xff08;组件&#xff09;。每个蓝图封装了相关的视图、静态文件、模板等。按功能划分&#xff1a;将大型应用按功能模块划分&#xff08;例如&#xff1a;用户认证、博客、管理后台&#xff09;&#…

设计模式详解

1.创建类型1.1 简单工厂startuml抽象产品接口 interface Product { Operation(): string } 具体产品A class ConcreteProductA { Operation(): string } 具体产品B class ConcreteProductB { Operation(): string } 工厂类 class Factory { CreateProduct(type: string): Produ…

前端查漏补缺

插槽默认、具名&#xff08;多个插槽&#xff09;、作用域&#xff08;接收子组件数据&#xff09;//具名 <div class"container"><header><slot name"header"></slot></header><main><slot></slot></…

网络协议UDP、TCP

一、网络协议 UDPUDP用户数据报协议&#xff1a;传输层网络编程模型B/S模型&#xff1a;browser/server&#xff08;浏览器/服务器&#xff09;客户端是通用的客户端&#xff08;浏览器&#xff09;一般只做服务器开发客户端要加载的数据均来自服务器C/S模型&#xff1a;client…