当前位置: 首页 > news >正文

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()

该方法返回一个新的字符数组,其中包含了字符串中的所有字符。每个字符都被存储在数组的一个元素中,顺序与字符串中的顺序相同。

这个方法可以用于许多情况,例如:

  1. 遍历字符串中的每个字符:通过将字符串转换为字符数组,您可以使用循环来遍历并处理每个字符。

  2. 修改字符串中的字符:字符串是不可变的,即不能直接修改字符串中的某个字符。但是,如果您将字符串转换为字符数组,您可以修改字符数组中的元素,然后再将其转换回字符串。

以下是一个使用 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程序,用于将用户输入的金额转换为大写金额表示。

代码解释如下:

  1. 导入必要的类:

    import java.util.Scanner;

    这行代码导入了java.util.Scanner类,用于从用户输入中读取数据。

  2. 创建Scanner对象:

    Scanner sc = new Scanner(System.in);

    这行代码创建了一个Scanner对象,用于读取用户输入。

  3. 提示用户输入金额:

    System.out.println("请输入您的金额");

    这行代码打印出提示信息,要求用户输入金额。

  4. 判断金额的合法性:

    while (true) {
    money = sc.nextInt();
    if (money >= 0 && money <= 9999999) {break;
    } else {System.out.println("金额无效,请重新输入");
    }
    }

    这段代码使用一个无限循环,直到用户输入的金额合法(大于等于0且小于等于9999999)才跳出循环。如果金额无效,会打印错误提示信息。

  5. 定义存储大写金额的字符串:

    String capitalStr = "";
  6. 转化数字:

    while (true) {
    int unit = money % 10;
    String unitStr = capital(unit);
    money /= 10;
    capitalStr = unitStr + capitalStr;
    if (money == 0) {break;
    }
    }

    这段代码使用一个无限循环,将金额的每一位数字转换为对应的大写形式,并将其拼接到capitalStr字符串的前面。循环结束的条件是金额为0,即所有位数都处理完毕。

  7. 前面补0:

    int count = 7 - capitalStr.length();
    for (int i = 1; i <= count; i++) {
    capitalStr = "零" + capitalStr;
    }

    这段代码计算需要在大写金额前面补0的个数,并使用循环在capitalStr字符串的前面添加相应数量的"零"字符。

  8. 插入单位:

    String[] str = {"佰","拾","万","仟","佰","拾","元"};
    String result = "";
    for (int i = 0; i < str.length; i++) {
    result = result + capitalStr.charAt(i) + str[i];
    }

    这段代码定义了一个字符串数组str,其中存储了单位(佰、拾、万、仟、佰、拾、元)。然后使用循环,将大写金额的每一位字符和对应的单位字符拼接到result字符串中。

  9. 输出结果:

    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 学生信息管理系统设计和实现以及文档报告 博主介绍&#xff1a;多年java开发经验&#xff0c;专注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 属于轻量级开源的嵌入式关系型数据库&#xff0c;但它支持 ACID(Atomicity,Consistency,Isolation,Durability) 事务。 SQLite Download Page: https://www.sqlite.org/download.html 第一步&#xff1a;在 php.ini 中开启 extensionsqlite3 第二步&#xff1a;连接数…...

【代驾+顺风车+货运】全开源双端APP代驾+顺风车+货运代驾小程序源码

内容目录 一、详细介绍二、效果展示1.部分代码2.效果图展示 一、详细介绍 系统是基于Thinkphpuniapp开发的&#xff0c;全开源未加密&#xff0c;这套源码可以拿回去自己做二开 后台用户端司机端 功能详情介绍&#xff1a; 车主实名认证&#xff0c;驾驶证认证&#xff0c;车…...

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&#xff1a;使用正则表达式搜索文本&#xff0c;将匹配的行打印出来&#xff08;匹配到的标红&#xff09; 命令格式&#xff1a;grep [option] pattern file <1> 命令参数 -A<显示行数>&#xff1a;除了显示符合范本样式的那一列之外&#xff0c;并…...

leetcode 107.二叉树的层序遍历II

题目 思路 正常层序遍历输出&#xff1a; [[3],[9,20],[15,7]] 这道题要求的输出&#xff1a;[[15,7],[9,20],[3]] 可以观察到&#xff0c;只要我们把原来的结果reverse一下就行了。 代码 //leetcode submit region begin(Prohibit modification and deletion)import java…...

Java生成唯一ID的方式有哪些?

在Java中生成唯一ID的方法多种多样&#xff0c;以下是几种常用方法及其示例代码&#xff1a; 1. 使用UUID UUID是一种普遍采用的生成唯一ID的方法&#xff0c;Java通过java.util.UUID类提供了简单的方法来生成。 import java.util.UUID;public class UniqueIdExample {publi…...

代码随想录day44:动态规划over,回文子串及字序列

文章目录 day44&#xff1a;动态规划over&#xff0c;回文子串647.回文子串516.最长回文子序列 day44&#xff1a;动态规划over&#xff0c;回文子串 647.回文子串 class Solution {public int countSubstrings(String s) { // 布尔类型的dp[i][j]&#xff1a;表示区间范围[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 密钥&#xff0c;可以按照以下步骤进行操作&#xff1a; 1.生成密钥&#xff1a;首先&#xff0c;在终端或命令提示符中运行以下命令生成密钥对&#xff1a; ssh-keygen -t rsa -b 4096 -C "dengweng-pulse.net"这将生成一个 RSA 密钥对&#xff0c;其中…...

Pandas库常用方法、函数集合

Pandas是Python数据分析处理的核心第三方库&#xff0c;它使用二维数组形式&#xff0c;类似Excel表格&#xff0c;并封装了很多实用的函数方法&#xff0c;让你可以轻松地对数据集进行各种操作。 这里列举下Pandas中常用的函数和方法&#xff0c;方便大家查询使用。 读取 写…...

Qt实现TFTP Server和 TFTP Client(一)

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

MySQL数据库的日志管理以及备份和恢复

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

Maven发布开源框架到远程仓库

1.背景 当你写了一个自我感觉良好的开源工具希望给他人分享&#xff0c;如果只是在github等网站进行公布之外&#xff0c;用户使用起来还不是很方便&#xff0c;特别是当你提供是特定领域的基础工具。你还可以把它部署到中央仓库&#xff0c;这样别人使用就会方便很多。接下来…...

Qt创建窗口选择的三个父类介绍 ----- QWidget、QMainWindow、QDialog

QWidget类 简介 QWidget是Qt中所有用户界面元素的基类。它提供了窗口的基本功能&#xff0c;并允许用户自定义窗口的外观和行为。QWidget可以包含其他QWidget子类的子窗口&#xff0c;从而实现复杂的用户界面。 特性 提供了窗口的基本功能&#xff0c;包括绘制、事件处理、…...

论文翻译 - Defending Against Alignment-Breaking Attacks via Robustly Aligned LLM

论文链接&#xff1a;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 被称为主题&#xff0c;在 kafka 中&#xff0c;使用一个类别属性来划分消息的所属类&#xff0c;划分消息的这个类称为 topic。topic 相当于消息的分配标签&#xff0c;是一个逻辑概念。主题好比是数据库的表&#xff0…...

【RPG Maker MV 仿新仙剑 战斗场景UI (八)】

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

Docker 离线安装指南

参考文章 1、确认操作系统类型及内核版本 Docker依赖于Linux内核的一些特性&#xff0c;不同版本的Docker对内核版本有不同要求。例如&#xff0c;Docker 17.06及之后的版本通常需要Linux内核3.10及以上版本&#xff0c;Docker17.09及更高版本对应Linux内核4.9.x及更高版本。…...

Unity3D中Gfx.WaitForPresent优化方案

前言 在Unity中&#xff0c;Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染&#xff08;即CPU被阻塞&#xff09;&#xff0c;这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案&#xff1a; 对惹&#xff0c;这里有一个游戏开发交流小组&…...

Neo4j 集群管理:原理、技术与最佳实践深度解析

Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...

C++八股 —— 单例模式

文章目录 1. 基本概念2. 设计要点3. 实现方式4. 详解懒汉模式 1. 基本概念 线程安全&#xff08;Thread Safety&#xff09; 线程安全是指在多线程环境下&#xff0c;某个函数、类或代码片段能够被多个线程同时调用时&#xff0c;仍能保证数据的一致性和逻辑的正确性&#xf…...

学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2

每日一言 今天的每一份坚持&#xff0c;都是在为未来积攒底气。 案例&#xff1a;OLED显示一个A 这边观察到一个点&#xff0c;怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 &#xff1a; 如果代码里信号切换太快&#xff08;比如 SDA 刚变&#xff0c;SCL 立刻变&#…...

什么是Ansible Jinja2

理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具&#xff0c;可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板&#xff0c;允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板&#xff0c;并通…...

【Linux手册】探秘系统世界:从用户交互到硬件底层的全链路工作之旅

目录 前言 操作系统与驱动程序 是什么&#xff0c;为什么 怎么做 system call 用户操作接口 总结 前言 日常生活中&#xff0c;我们在使用电子设备时&#xff0c;我们所输入执行的每一条指令最终大多都会作用到硬件上&#xff0c;比如下载一款软件最终会下载到硬盘上&am…...

ZYNQ学习记录FPGA(一)ZYNQ简介

一、知识准备 1.一些术语,缩写和概念&#xff1a; 1&#xff09;ZYNQ全称&#xff1a;ZYNQ7000 All Pgrammable SoC 2&#xff09;SoC:system on chips(片上系统)&#xff0c;对比集成电路的SoB&#xff08;system on board&#xff09; 3&#xff09;ARM&#xff1a;处理器…...

解析两阶段提交与三阶段提交的核心差异及MySQL实现方案

引言 在分布式系统的事务处理中&#xff0c;如何保障跨节点数据操作的一致性始终是核心挑战。经典的两阶段提交协议&#xff08;2PC&#xff09;通过准备阶段与提交阶段的协调机制&#xff0c;以同步决策模式确保事务原子性。其改进版本三阶段提交协议&#xff08;3PC&#xf…...

基于单片机的宠物屋智能系统设计与实现(论文+源码)

本设计基于单片机的宠物屋智能系统核心是实现对宠物生活环境及状态的智能管理。系统以单片机为中枢&#xff0c;连接红外测温传感器&#xff0c;可实时精准捕捉宠物体温变化&#xff0c;以便及时发现健康异常&#xff1b;水位检测传感器时刻监测饮用水余量&#xff0c;防止宠物…...