当前位置: 首页 > 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.…...

MPNet:旋转机械轻量化故障诊断模型详解python代码复现

目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...

C++初阶-list的底层

目录 1.std::list实现的所有代码 2.list的简单介绍 2.1实现list的类 2.2_list_iterator的实现 2.2.1_list_iterator实现的原因和好处 2.2.2_list_iterator实现 2.3_list_node的实现 2.3.1. 避免递归的模板依赖 2.3.2. 内存布局一致性 2.3.3. 类型安全的替代方案 2.3.…...

【Java学习笔记】Arrays类

Arrays 类 1. 导入包&#xff1a;import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序&#xff08;自然排序和定制排序&#xff09;Arrays.binarySearch()通过二分搜索法进行查找&#xff08;前提&#xff1a;数组是…...

C# 类和继承(抽象类)

抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...

unix/linux,sudo,其发展历程详细时间线、由来、历史背景

sudo 的诞生和演化,本身就是一部 Unix/Linux 系统管理哲学变迁的微缩史。来,让我们拨开时间的迷雾,一同探寻 sudo 那波澜壮阔(也颇为实用主义)的发展历程。 历史背景:su的时代与困境 ( 20 世纪 70 年代 - 80 年代初) 在 sudo 出现之前,Unix 系统管理员和需要特权操作的…...

AGain DB和倍数增益的关系

我在设置一款索尼CMOS芯片时&#xff0c;Again增益0db变化为6DB&#xff0c;画面的变化只有2倍DN的增益&#xff0c;比如10变为20。 这与dB和线性增益的关系以及传感器处理流程有关。以下是具体原因分析&#xff1a; 1. dB与线性增益的换算关系 6dB对应的理论线性增益应为&…...

tomcat指定使用的jdk版本

说明 有时候需要对tomcat配置指定的jdk版本号&#xff0c;此时&#xff0c;我们可以通过以下方式进行配置 设置方式 找到tomcat的bin目录中的setclasspath.bat。如果是linux系统则是setclasspath.sh set JAVA_HOMEC:\Program Files\Java\jdk8 set JRE_HOMEC:\Program Files…...

实战三:开发网页端界面完成黑白视频转为彩色视频

​一、需求描述 设计一个简单的视频上色应用&#xff0c;用户可以通过网页界面上传黑白视频&#xff0c;系统会自动将其转换为彩色视频。整个过程对用户来说非常简单直观&#xff0c;不需要了解技术细节。 效果图 ​二、实现思路 总体思路&#xff1a; 用户通过Gradio界面上…...

flow_controllers

关键点&#xff1a; 流控制器类型&#xff1a; 同步&#xff08;Sync&#xff09;&#xff1a;发布操作会阻塞&#xff0c;直到数据被确认发送。异步&#xff08;Async&#xff09;&#xff1a;发布操作非阻塞&#xff0c;数据发送由后台线程处理。纯同步&#xff08;PureSync…...

WEB3全栈开发——面试专业技能点P4数据库

一、mysql2 原生驱动及其连接机制 概念介绍 mysql2 是 Node.js 环境中广泛使用的 MySQL 客户端库&#xff0c;基于 mysql 库改进而来&#xff0c;具有更好的性能、Promise 支持、流式查询、二进制数据处理能力等。 主要特点&#xff1a; 支持 Promise / async-await&#xf…...