Java中的String字符串练习
目录
Java中的String字符串练习
01-用户登录
02-遍历字符串并统计字符个数
03-字符串拼接
04-字符串反转
注意点
05-金额转化(简单)
代码解释:
06-手机号屏蔽
07-身份证号码查看
易错点:
08-敏感词替换
01-用户登录
package com.xiaonan.exercise06;import java.util.Scanner;public class Demo01 {public static void main(String[] args) {Scanner sc = new Scanner(System.in);//特别注意 next的字符串是new出来的//String s = sc.next();//以后想要比较字符串的内容 就必须要使用String里的方法 equal 或者equal...(忽略字母的大小写)String id = "莫华南";String idCode = "Aa123456789";//一共三次机会int flag = 3;for (int i = 0; i < 3; i++) {System.out.println("请输入您的id");String userId = sc.next();System.out.println("请输入您的密码");///String userIdCode = sc.next();String userIdCode = sc.next();//验证id 和密码if(id.equals(userId) && idCode.equals(userIdCode)){System.out.println("登录成功!");break;}else if(flag==1){System.out.println("登录失败,账户被锁定");}else{System.out.println("您的id或者密码错误,请重新输入"+"剩下("+(--flag)+")次机会");continue;}}}
}
02-遍历字符串并统计字符个数
package com.xiaonan.exercise06;import java.util.Scanner;public class Demo02 {public static void main(String[] args) {Scanner sc = new Scanner(System.in);//键盘录入一个字符串String s = sc.nextLine();//遍历字符串// 统计大写字母的个数int bigLetterCount = 0;// 统计小写字母的个数int smallLetterCount = 0;// 统计数字字符的个数int dightCount = 0;for (int i = 0; i < s.length(); i++) {//s.length() 这个是方法 计算字符串的长度//s.charAt(int index) 这个也是方法 index是字符串的索引 charAt(int index) 拿出字符串里的每一个字符char c = s.charAt(i);if(c>='A' && c<='Z'){//char类型的变量 在参与运算的时候 自动类型提升为int 查询ASCII表bigLetterCount++;}else if(c>='a' && c<='z'){smallLetterCount++;}else if(c>='0' && c<='9'){dightCount++;}}//输出System.out.println(bigLetterCount+","+smallLetterCount+","+dightCount);}
}
03-字符串拼接
package com.xiaonan.exercise06;public class Demo03 {public static void main(String[] args) {//定义一个数组int[] arr = {1, 2, 3, 4, 5, 6};String s = jointString(arr);//输出打印for (int i = 0; i < s.length(); i++) {char c = s.charAt(i);System.out.print(c);}System.out.println();}//拼接字符串public static String jointString(int[] arr) {//先加一个 判断数组是否为空if (arr == null) {return "";}// 判断数组长度是否为0if (arr.length == 0) {return "[]";}String s = "[";for (int i = 0; i < arr.length; i++) {//解释/*** 在Java中,当一个字符串与其他类型的数据进行连接操作时,Java会自动将其他类型的数据转换为字符串。* 这个过程称为字符串的拼接或字符串的连接。** 在代码中,表达式s = s + 12;中,整数12会自动转换为字符串"12",* 然后与字符串s连接在一起,形成新的字符串"[12"。*/if(i==arr.length-1){s = s + arr[i];}else{s = s + arr[i] +",";}}s = s + ']';return s;}
}
04-字符串反转
package com.xiaonan.exercise06;public class Demo04 {public static void main(String[] args) {String result = reverser("123456789");System.out.println(result);}//1. 反转字符串public static String reverser(String str){//定义一个字符串String result = "";for (int i = str.length()-1; i >= 0; i--) {char c = str.charAt(i);result = result + c;}return result;}}
注意点
toCharArray()
是Java中的一个方法,它用于将字符串转换为字符数组。
方法签名如下:
public char[] toCharArray()
该方法返回一个新的字符数组,其中包含了字符串中的所有字符。每个字符都被存储在数组的一个元素中,顺序与字符串中的顺序相同。
这个方法可以用于许多情况,例如:
-
遍历字符串中的每个字符:通过将字符串转换为字符数组,您可以使用循环来遍历并处理每个字符。
-
修改字符串中的字符:字符串是不可变的,即不能直接修改字符串中的某个字符。但是,如果您将字符串转换为字符数组,您可以修改字符数组中的元素,然后再将其转换回字符串。
以下是一个使用 toCharArray()
方法的示例:
String str = "Hello";
char[] charArray = str.toCharArray();// 遍历字符数组
for (char c : charArray) {System.out.println(c);
}// 修改字符数组中的元素
charArray[0] = 'h';// 将字符数组转换回字符串
String modifiedStr = new String(charArray);
System.out.println(modifiedStr);
输出结果:
H
e
l
l
o
hello
总之,toCharArray()
方法是将字符串转换为字符数组的一种方便的方式,它可以在需要处理单个字符的情况下提供更灵活的操作。
05-金额转化(简单)
package com.xiaonan.exercise06;import java.util.Scanner;public class Demo05 {public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.println("请输入您的金额");//定义一个变量 存储金额int money;// 1. 判断金额的合法性 最大为7位数字while (true) {//重复使用户输入money = sc.nextInt();if (money >= 0 && money <= 9999999) {break;} else {System.out.println("金额无效,请重新输入");}}//定义 存储大写字符串String capitalStr = "";//2. 转化数字while (true) {//拿个位int unit = money % 10;String unitStr = capital(unit);//丢个位 这里是从 money 录入的💴里丢money /= 10;// 注意点1: 注意拼接的前后的顺序capitalStr = unitStr + capitalStr;//结束循环 这里是当 money==0 时 才退出循环if (money == 0) {break;}}//3. 前面补0//补0的个数int count = 7 - capitalStr.length();for (int i = 1; i <= count; i++) {// 是前面 所以要拼接的顺序改变一下capitalStr = "零" + capitalStr;}//4. 插入单位//定义一个数组表示单位String[] str = {"佰","拾","万","仟","佰","拾","元"};//定义一个字符串 存储结果String result = "";for (int i = 0; i < str.length; i++) {//得到原来的字符串的每一位 并赋值result = result + capitalStr.charAt(i) + str[i];}//输出结果System.out.println(result);}//转化为数字的大写public static String capital(int number) {//定义一个大写数字的字符串数组String[] str = {"零","壹", "贰", "叁", "肆", "伍", "陆", "柒", "玐", "玖"};//直接返还return str[number];}
}
代码解释:
这段代码是一个Java程序,用于将用户输入的金额转换为大写金额表示。
代码解释如下:
-
导入必要的类:
import java.util.Scanner;
这行代码导入了
java.util.Scanner
类,用于从用户输入中读取数据。 -
创建
Scanner
对象:Scanner sc = new Scanner(System.in);
这行代码创建了一个
Scanner
对象,用于读取用户输入。 -
提示用户输入金额:
System.out.println("请输入您的金额");
这行代码打印出提示信息,要求用户输入金额。
-
判断金额的合法性:
while (true) { money = sc.nextInt(); if (money >= 0 && money <= 9999999) {break; } else {System.out.println("金额无效,请重新输入"); } }
这段代码使用一个无限循环,直到用户输入的金额合法(大于等于0且小于等于9999999)才跳出循环。如果金额无效,会打印错误提示信息。
-
定义存储大写金额的字符串:
String capitalStr = "";
-
转化数字:
while (true) { int unit = money % 10; String unitStr = capital(unit); money /= 10; capitalStr = unitStr + capitalStr; if (money == 0) {break; } }
这段代码使用一个无限循环,将金额的每一位数字转换为对应的大写形式,并将其拼接到
capitalStr
字符串的前面。循环结束的条件是金额为0,即所有位数都处理完毕。 -
前面补0:
int count = 7 - capitalStr.length(); for (int i = 1; i <= count; i++) { capitalStr = "零" + capitalStr; }
这段代码计算需要在大写金额前面补0的个数,并使用循环在
capitalStr
字符串的前面添加相应数量的"零"字符。 -
插入单位:
String[] str = {"佰","拾","万","仟","佰","拾","元"}; String result = ""; for (int i = 0; i < str.length; i++) { result = result + capitalStr.charAt(i) + str[i]; }
这段代码定义了一个字符串数组
str
,其中存储了单位(佰、拾、万、仟、佰、拾、元)。然后使用循环,将大写金额的每一位字符和对应的单位字符拼接到result
字符串中。 -
输出结果:
System.out.println(result);
最后,将结果打印出来,即用户输入金额的大写表示。
此代码实现了将用户输入的金额转换为大写金额的功能。
06-手机号屏蔽
package com.xiaonan.exercise06;public class Demo06 {public static void main(String[] args) {//1. 定义一个手机号码String phoneNumber = "13112349468";//2. 截取前面的三位//substring(0,3) 代表前面的三位 包左不包右String start = phoneNumber.substring(0,3);//3. 截取后面的四位数字 包左不包右 从7(包括)到末尾 按字符串的下标String end = phoneNumber.substring(7);//4. 拼接String str = start + "****" + end;//5. 输出System.out.println(str);}
}
07-身份证号码查看
package com.xiaonan.exercise06;import java.util.Scanner;public class Demo07 {public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.println("请输入您的身份证号");//在while外定义 身份证号String idCard;while(true){idCard = sc.next();if(idCard.length()!=18){System.out.println("您输入的身份证号码有误,请重新输入");}else {System.out.println("输入成功");break;}}//1. 获取出生年月日String year = idCard.substring(6,10);String month = idCard.substring(10,12);String day = idCard.substring(12,14);//2. 获取性别String gender = idCard.substring(16,17);char c = gender.charAt(0);//这里的test的值为 ASCII码值 不是真正的"数字"//我要拿的是里面的之前存储的数字1,2 来计算 而不是拿数字对应的码值来计int test = (int)c; //所以这是错的System.out.println("--------"+test);//**注意点1, 这里要转化**if((c-'0')%2==0){ // 判断奇偶数 判断的是 余数是否为0(偶数) 不为0(奇数)gender = "女";}else{gender = "男";}//3. 输出System.out.println("人物信息为");System.out.println(year+"年"+month+"月"+day+"日");System.out.println("性别为: "+gender);}
}
易错点:
**//2. 获取性别 String gender = idCard.substring(16,17); char c = gender.charAt(0); //这里的test的值为 ASCII码值 不是真正的"数字" //我要拿的是里面的之前存储的数字1,2 来计算 而不是拿数字对应的码值来计 int test = (int)c; //所以这是错的 System.out.println("--------"+test); //注意点1, 这里要转化 if((c-'0')%2==0){ gender = "女"; }else{ gender = "男"; }
08-敏感词替换
package com.xiaonan.exercise06;public class Demo08 {public static void main(String[] args) {String talk = "TMD,我CNM,Sb玩意莫华南MLGB,TMD,TMD";//1. 定义一个敏感词 数组(库)String[] arr = {"TMD","CNM","Sb","MLGB"};//2. 替换敏感词for (int i = 0; i < arr.length; i++) {talk = talk.replace(arr[i],"***");//方法原理 看输出的语句就知道了System.out.println(talk);}//3.输出System.out.println(talk);}
}
相关文章:
Java中的String字符串练习
目录 Java中的String字符串练习 01-用户登录 02-遍历字符串并统计字符个数 03-字符串拼接 04-字符串反转 注意点 05-金额转化(简单) 代码解释: 06-手机号屏蔽 07-身份证号码查看 易错点: 08-敏感词替换 01-用户登录 package com.xiaonan.exercise06;import java.u…...

基于JavaWeb SSM mybatis 学生信息管理系统设计和实现以及文档报告
基于JavaWeb SSM mybatis 学生信息管理系统设计和实现以及文档报告 博主介绍:多年java开发经验,专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 央顺技术团队 Java毕设项目精品实战案例《1000套》 欢迎点赞 收藏 …...
二进制源码部署mysql8.0.35
二进制部署mysql8.0.35 创建mysql用户 [rootzyq ~]#: useradd -r -s /sbin/nologin -M mysql [rootzyq ~]#: id mysql uid990(mysql) gid990(mysql) groups990(mysql)上传mysql文件 [rootzyq ~]#: ls anaconda-ks.cfg mysql-8.0.35-linux-glibc2.28-x86_64.tar.xz解压 [roo…...

PHP 读取嵌入式数据 SQLite3
SQLite3 属于轻量级开源的嵌入式关系型数据库,但它支持 ACID(Atomicity,Consistency,Isolation,Durability) 事务。 SQLite Download Page: https://www.sqlite.org/download.html 第一步:在 php.ini 中开启 extensionsqlite3 第二步:连接数…...

【代驾+顺风车+货运】全开源双端APP代驾+顺风车+货运代驾小程序源码
内容目录 一、详细介绍二、效果展示1.部分代码2.效果图展示 一、详细介绍 系统是基于Thinkphpuniapp开发的,全开源未加密,这套源码可以拿回去自己做二开 后台用户端司机端 功能详情介绍: 车主实名认证,驾驶证认证,车…...
C++语言学习(三)—— 文件操作
目录 一、文件操作 1.1 打开文件 1.2 关闭文件 1.3 读取文件 1.4 写入文件 1.5 文件指针 1.6 文件状态 1.7 其他文件操作 二、文件操作函数 2.1 打开文件函数 2.2 关闭文件函数 2.3 写入文件函数 2.4 读取文件函数 2.5 读取一行函数 2.6 获取文件大小函数 2.7 …...

linux文本三剑客 --- grep、sed、awk
1、grep grep:使用正则表达式搜索文本,将匹配的行打印出来(匹配到的标红) 命令格式:grep [option] pattern file <1> 命令参数 -A<显示行数>:除了显示符合范本样式的那一列之外,并…...

leetcode 107.二叉树的层序遍历II
题目 思路 正常层序遍历输出: [[3],[9,20],[15,7]] 这道题要求的输出:[[15,7],[9,20],[3]] 可以观察到,只要我们把原来的结果reverse一下就行了。 代码 //leetcode submit region begin(Prohibit modification and deletion)import java…...
Java生成唯一ID的方式有哪些?
在Java中生成唯一ID的方法多种多样,以下是几种常用方法及其示例代码: 1. 使用UUID UUID是一种普遍采用的生成唯一ID的方法,Java通过java.util.UUID类提供了简单的方法来生成。 import java.util.UUID;public class UniqueIdExample {publi…...
代码随想录day44:动态规划over,回文子串及字序列
文章目录 day44:动态规划over,回文子串647.回文子串516.最长回文子序列 day44:动态规划over,回文子串 647.回文子串 class Solution {public int countSubstrings(String s) { // 布尔类型的dp[i][j]:表示区间范围[i…...

ElasticSearch启动报错:Exception in thread “main“ SettingsException
Exception in thread "main" SettingsException[Failed to load settings from [elasticsearch.yml]]; nested: ParsingException[Failed to parse object: expecting token of type [START_OBJECT] but found [VALUE_STRING]]; 这个报错说明elasticsearch.yml这个配…...

git配置密钥
要配置 Git 密钥,可以按照以下步骤进行操作: 1.生成密钥:首先,在终端或命令提示符中运行以下命令生成密钥对: ssh-keygen -t rsa -b 4096 -C "dengweng-pulse.net"这将生成一个 RSA 密钥对,其中…...
Pandas库常用方法、函数集合
Pandas是Python数据分析处理的核心第三方库,它使用二维数组形式,类似Excel表格,并封装了很多实用的函数方法,让你可以轻松地对数据集进行各种操作。 这里列举下Pandas中常用的函数和方法,方便大家查询使用。 读取 写…...

Qt实现TFTP Server和 TFTP Client(一)
1 概述 TFTP协议是基于UDP的简单文件传输协议,协议双方为Client和Server.Client和Server之间通过5种消息来传输文件,消息前两个字节Code是消息类型,消息内容随消息类型不同而不同。传输模式有三种:octet,netascii和mail,octet为二…...

MySQL数据库的日志管理以及备份和恢复
目录 1、日志管理 2、查询日志 3、数据备份的重要性 4、数据库备份的分类 4.1物理备份 4.2逻辑备份: 4.3完全备份 5、常见的备份方法 6、MySQL完全备份 6.1MySQL完全备份优缺点 6.2数据库完全备份分类 6.2.1物理冷备份与恢复 6.2.2mysqldump备份…...

Maven发布开源框架到远程仓库
1.背景 当你写了一个自我感觉良好的开源工具希望给他人分享,如果只是在github等网站进行公布之外,用户使用起来还不是很方便,特别是当你提供是特定领域的基础工具。你还可以把它部署到中央仓库,这样别人使用就会方便很多。接下来…...
Qt创建窗口选择的三个父类介绍 ----- QWidget、QMainWindow、QDialog
QWidget类 简介 QWidget是Qt中所有用户界面元素的基类。它提供了窗口的基本功能,并允许用户自定义窗口的外观和行为。QWidget可以包含其他QWidget子类的子窗口,从而实现复杂的用户界面。 特性 提供了窗口的基本功能,包括绘制、事件处理、…...
论文翻译 - Defending Against Alignment-Breaking Attacks via Robustly Aligned LLM
论文链接:https://arxiv.org/pdf/2309.14348.pdf Defending Against Alignment-Breaking Attacks via Robustly Aligned LLM Abstract1 Introduction2 Related Works3 Our Proposed Method3.1 Threat Model3.2 Our Proposed Method3.3 Practical Designs3.4 Theoret…...

Kafka总结问题
Kafka Kafka Kafka Kafka的核心概念/ 结构 topoic Topic 被称为主题,在 kafka 中,使用一个类别属性来划分消息的所属类,划分消息的这个类称为 topic。topic 相当于消息的分配标签,是一个逻辑概念。主题好比是数据库的表࿰…...

【RPG Maker MV 仿新仙剑 战斗场景UI (八)】
RPG Maker MV 仿新仙剑 战斗场景UI 八 状态及装备场景代码效果 状态及装备场景 本计划在战斗场景中直接制作的,但考虑到在战斗场景中加入太多的窗口这不太合适,操作也繁琐,因此直接使用其他场景。 代码 Pal_Window_EquipStatus.prototype.…...

【WiFi帧结构】
文章目录 帧结构MAC头部管理帧 帧结构 Wi-Fi的帧分为三部分组成:MAC头部frame bodyFCS,其中MAC是固定格式的,frame body是可变长度。 MAC头部有frame control,duration,address1,address2,addre…...
深入浅出:JavaScript 中的 `window.crypto.getRandomValues()` 方法
深入浅出:JavaScript 中的 window.crypto.getRandomValues() 方法 在现代 Web 开发中,随机数的生成看似简单,却隐藏着许多玄机。无论是生成密码、加密密钥,还是创建安全令牌,随机数的质量直接关系到系统的安全性。Jav…...

UDP(Echoserver)
网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法:netstat [选项] 功能:查看网络状态 常用选项: n 拒绝显示别名&#…...

Map相关知识
数据结构 二叉树 二叉树,顾名思义,每个节点最多有两个“叉”,也就是两个子节点,分别是左子 节点和右子节点。不过,二叉树并不要求每个节点都有两个子节点,有的节点只 有左子节点,有的节点只有…...
Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信
文章目录 Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信前言一、网络通信基础概念二、服务端与客户端的完整流程图解三、每一步的详细讲解和代码示例1. 创建Socket(服务端和客户端都要)2. 绑定本地地址和端口&#x…...

算法岗面试经验分享-大模型篇
文章目录 A 基础语言模型A.1 TransformerA.2 Bert B 大语言模型结构B.1 GPTB.2 LLamaB.3 ChatGLMB.4 Qwen C 大语言模型微调C.1 Fine-tuningC.2 Adapter-tuningC.3 Prefix-tuningC.4 P-tuningC.5 LoRA A 基础语言模型 A.1 Transformer (1)资源 论文&a…...

Golang——9、反射和文件操作
反射和文件操作 1、反射1.1、reflect.TypeOf()获取任意值的类型对象1.2、reflect.ValueOf()1.3、结构体反射 2、文件操作2.1、os.Open()打开文件2.2、方式一:使用Read()读取文件2.3、方式二:bufio读取文件2.4、方式三:os.ReadFile读取2.5、写…...

从“安全密码”到测试体系:Gitee Test 赋能关键领域软件质量保障
关键领域软件测试的"安全密码":Gitee Test如何破解行业痛点 在数字化浪潮席卷全球的今天,软件系统已成为国家关键领域的"神经中枢"。从国防军工到能源电力,从金融交易到交通管控,这些关乎国计民生的关键领域…...
API网关Kong的鉴权与限流:高并发场景下的核心实践
🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 引言 在微服务架构中,API网关承担着流量调度、安全防护和协议转换的核心职责。作为云原生时代的代表性网关,Kong凭借其插件化架构…...
智能职业发展系统:AI驱动的职业规划平台技术解析
智能职业发展系统:AI驱动的职业规划平台技术解析 引言:数字时代的职业革命 在当今瞬息万变的就业市场中,传统的职业规划方法已无法满足个人和企业的需求。据统计,全球每年有超过2亿人面临职业转型困境,而企业也因此遭…...