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

【PyQt】18 -菜单等顶层操作

顶层界面的使用 前言一、菜单栏1.1 代码1.2 运行结果 二、工具栏2.1 代码几种显示方法 2.2 运行结果 三、状态栏3.1 代码3.2 运行结果 总结 前言 1、介绍顶层菜单栏目的使用&#xff0c;但没有陆续绑定槽函数。 2、工具栏 3、状态栏 一、菜单栏 1.1 代码 #Author &#xff1a…...

线性代数基础概念和在AI中的应用

基本概念 线性代数是数学的一个分支&#xff0c;专注于向量、向量空间&#xff08;也称为线性空间&#xff09;、线性变换和矩阵的研究。这些概念在数据科学、人工智能、工程学和物理学等多个领域都有广泛应用。以下是这些基本概念的详细解释和它们在数据处理和AI中的应用。 …...

elasticsearch _cat/indices docs.count is different than <index>/_count

今天遇到一个问题&#xff0c;kibana中看到文档数与下面语句查询到的不同 GET /_cat/count/jiankunking_xxxxx_product_expand_test?v GET /jiankunking_xxxxx_product_expand_test/_search?track_total_hitstrue语句查询结果 epoch timestamp count 1711433785 06:16…...

关系型数据库mysql(7)sql高级语句

目录 一.MySQL常用查询 1.按关键字&#xff08;字段&#xff09;进行升降排序 按分数排序 &#xff08;默认为升序&#xff09; 按分数升序显示 按分数降序显示 根据条件进行排序&#xff08;加上where&#xff09; 根据多个字段进行排序 ​编辑 2.用或&#xff08;or&…...

计算机网络——网络基础1

网络基础一 1.初识网络 ​ 网卡也是一种文件&#xff0c;所以对于网络的编程也是一种文件操作&#xff1b; ​ 早期由于不同的计算机之间要根据数据进行协作&#xff0c;但是计算机之间是独立的&#xff0c;所以使用了光驱或者软盘之类的进行协作&#xff1b;对于将计算机连…...

ERDUnet: An Efficient Residual Double-codingUnet for Medical Image Segmentation

ERDUnet:一种用于医学图像分割的高效残差双编码单元 摘要 医学图像分割在临床诊断中有着广泛的应用,基于卷积神经网络的分割方法已经能够达到较高的准确率。然而,提取全局上下文特征仍然很困难,而且参数太大,无法临床应用。为此,我们提出了一种新的网络结构来改进传统的…...

vue响应式基础

声明响应式状态​ ref()​ 在组合式 API 中&#xff0c;推荐使用 ref() 函数来声明响应式状态&#xff1a; import { ref } from vueconst count ref(0) ref() 接收参数&#xff0c;并将其包裹在一个带有 .value 属性的 ref 对象中返回&#xff1a; const count ref(0)c…...

每天上万简历,录取不到1%!阿里腾讯的 offer 都给了哪些人?

三月天杨柳醉春烟~正是求职好时节~ 与去年秋招的冷淡不同&#xff0c;今年春招市场放宽了许多&#xff0c;不少企业纷纷抛出橄榄枝&#xff0c;各大厂的只差把“缺人”两个字写在脸上了。 字节跳动技术方向开放数10个类型岗位&#xff0c;研发需求占比60%&#xff0c;非研发新增…...

外包干了20天,技术退步明显.......

先说一下自己的情况&#xff0c;大专生&#xff0c;21年通过校招进入杭州某软件公司&#xff0c;干了接近2年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落! 而我已经在一个企业干了2年的功能测试…...

4核8G云服务器,阿里云要多少钱?

阿里云4核8G服务器优惠价格955元一年&#xff0c;配置为ECS通用算力型u1实例&#xff08;ecs.u1-c1m2.xlarge&#xff09;4核8G配置、1M到3M带宽可选、ESSD Entry系统盘20G到40G可选&#xff0c;CPU采用Intel(R) Xeon(R) Platinum处理器&#xff0c;阿里云活动链接 aliyunfuwuq…...