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

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...

DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径

目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...

MongoDB学习和应用(高效的非关系型数据库)

一丶 MongoDB简介 对于社交类软件的功能&#xff0c;我们需要对它的功能特点进行分析&#xff1a; 数据量会随着用户数增大而增大读多写少价值较低非好友看不到其动态信息地理位置的查询… 针对以上特点进行分析各大存储工具&#xff1a; mysql&#xff1a;关系型数据库&am…...

云启出海,智联未来|阿里云网络「企业出海」系列客户沙龙上海站圆满落地

借阿里云中企出海大会的东风&#xff0c;以**「云启出海&#xff0c;智联未来&#xff5c;打造安全可靠的出海云网络引擎」为主题的阿里云企业出海客户沙龙云网络&安全专场于5.28日下午在上海顺利举办&#xff0c;现场吸引了来自携程、小红书、米哈游、哔哩哔哩、波克城市、…...

【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器

——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的​​一体化测试平台​​&#xff0c;覆盖应用全生命周期测试需求&#xff0c;主要提供五大核心能力&#xff1a; ​​测试类型​​​​检测目标​​​​关键指标​​功能体验基…...

【JVM】- 内存结构

引言 JVM&#xff1a;Java Virtual Machine 定义&#xff1a;Java虚拟机&#xff0c;Java二进制字节码的运行环境好处&#xff1a; 一次编写&#xff0c;到处运行自动内存管理&#xff0c;垃圾回收的功能数组下标越界检查&#xff08;会抛异常&#xff0c;不会覆盖到其他代码…...

ESP32读取DHT11温湿度数据

芯片&#xff1a;ESP32 环境&#xff1a;Arduino 一、安装DHT11传感器库 红框的库&#xff0c;别安装错了 二、代码 注意&#xff0c;DATA口要连接在D15上 #include "DHT.h" // 包含DHT库#define DHTPIN 15 // 定义DHT11数据引脚连接到ESP32的GPIO15 #define D…...

【C语言练习】080. 使用C语言实现简单的数据库操作

080. 使用C语言实现简单的数据库操作 080. 使用C语言实现简单的数据库操作使用原生APIODBC接口第三方库ORM框架文件模拟1. 安装SQLite2. 示例代码:使用SQLite创建数据库、表和插入数据3. 编译和运行4. 示例运行输出:5. 注意事项6. 总结080. 使用C语言实现简单的数据库操作 在…...

工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配

AI3D视觉的工业赋能者 迁移科技成立于2017年&#xff0c;作为行业领先的3D工业相机及视觉系统供应商&#xff0c;累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成&#xff0c;通过稳定、易用、高回报的AI3D视觉系统&#xff0c;为汽车、新能源、金属制造等行…...

精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南

精益数据分析&#xff08;97/126&#xff09;&#xff1a;邮件营销与用户参与度的关键指标优化指南 在数字化营销时代&#xff0c;邮件列表效度、用户参与度和网站性能等指标往往决定着创业公司的增长成败。今天&#xff0c;我们将深入解析邮件打开率、网站可用性、页面参与时…...