关于String的一些常用方法的编程练习题

2024-09-01 22:44

本文主要是介绍关于String的一些常用方法的编程练习题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在这里插入图片描述

    public static void main(String[] args) {/*** 思路分析* 1.编写方法public static String reverse(String str, int start, int end) {* 2.把String 转成 char[],因为char[] 的元素是可以交换的* 3.代码实现*/String s = "abcdef";System.out.println("交换前================");System.out.println(s);System.out.println("交换后=================");try {s = reverse(s, 1, 4);} catch (Exception e) {System.out.println(e.getMessage());return;}System.out.println(s);}public static String reverse(String str, int start, int end) {//对输入的参数做一个验证//这里分享一个编程技巧//1.凡是涉及到错误校验情况的,可以先写出正确的情况(因为容易想到)//2.然后整体再取反,即可完成错误校验的代码部分if(!(str!=null && start<end && start >= 0 && end <str.length())){throw new RuntimeException("参数不正确");}char[] sArr = str.toCharArray();char temp = ' ';for (int i = start,j= end; i < j; i++,j--) {//注意边界条件的设置temp = sArr[i];//辅助变量sArr[i] = sArr[j];sArr[j] = temp;}//注意不能返回str,因为String是被final修饰的,所以要重新构建
//        String res = sArr.toString();这样是不行的哈return new String(sArr);}//输出结果如下,如果输入的参数正确的话
交换前================
abcdef
交换后=================
aedcbf
//如果输入的参数有误,则会输出
交换前================
abcdef
交换后=================
参数不正确

在这里插入图片描述

public class Journey {public static void main(String[] args) {String username = "kere";String passward = "123456";String email = "123@qq.com";try {userRegister(username,passward,email);//如果没有抛出异常,说明注册成功了System.out.println("恭喜你 注册成功!!!");} catch (Exception e) {System.out.println(e.getMessage());}}public static void userRegister(String name,String pwd,String email){//再升级下,多加些校验机制if(!(name!=null&&pwd!=null&&email!=null)){throw new RuntimeException("参数不能为空哟!!!");}//过关//用户名长度为2、3、4int nameLength = name.length();if(!(nameLength>=2&&nameLength<5)){throw new RuntimeException("用户名长度不正确!!!");}//第二关,密码长度为6,要求全是数字if(!(pwd.length()==6&&digital(pwd))){throw new RuntimeException("密码长度不正确或密码中包含有非法字符");}//第三关,@在.之前int index1 = email.indexOf("@");int index2 = email.indexOf(".");if(!(index1>-1 && index1<index2)){throw new RuntimeException("邮箱格式错误");}}public static boolean digital(String pwd){char[] pwdArr = pwd.toCharArray();for (int i = 0; i < pwdArr.length; i++) {if(!(pwdArr[i]<'9'&&pwdArr[i]>'0')){return false;}}return true;}}

在这里插入图片描述

public class Journey {public static void main(String[] args) {//以Joe, Dss .K的形式打印出来  其中.K 是中间单词的首字母大写String name = "Dss kerwin Joe";printName(name);}//编写方法,完成输出格式要求的字符串/*** 思路分析:* 1.对输入的字符串进行分割split("")* 2.对得到的String[] 进行格式化String.format()* 3.对输入的字符串进行校验即可*/public static void printName(String str) {if (str == null) {System.out.println("str 不能为空哟");return;}String[] s = str.split(" ");if (s.length != 3) {//这种容易想到的,就不要刻意去照搬之前的校验技巧了,之前的校验技巧是情况复杂时,先写出正确的,最后整体取反System.out.println("输入的名字格式不正确!!!");return;}//格式化,使之按照Joe, Dss .K 输出String formatRes = String.format("%s, %s .%c", s[2], s[0], s[1].toUpperCase().charAt(0));System.out.println(formatRes);}
}

在这里插入图片描述

public class Journey {public static void main(String[] args) {String youth = "ABjso340xW";countStr(youth);System.out.println("=============");String ess = "csijdcbsljdbv23bux899AAA";countStr(ess);System.out.println("=======================");String ker = null;try {countStr(ker);} catch (Exception e) {System.out.println(e.getMessage());}}public static void countStr(String str){if(str==null){throw new RuntimeException("给定的参数不能为空哟!!!");}char[] youthAAA = str.toCharArray();int NumCount = 0;int UpperCount = 0;int LowerCount = 0;for(char i : youthAAA){if(i<='9'&&i>='0'){NumCount++;}else if(i<='z'&&i>='a'){LowerCount++;}else if(i<='Z'&&i>='A'){UpperCount++;}}System.out.println("字符串中有"+NumCount+"个数字");System.out.println("字符串中有"+UpperCount+"个大写字母");System.out.println("字符串中有"+LowerCount+"个小写字母");}
}//输出结果
字符串中有3个数字
字符串中有3个大写字母
字符串中有4个小写字母
=============
字符串中有5个数字
字符串中有3个大写字母
字符串中有16个小写字母
=======================
给定的参数不能为空哟!!!

在这里插入图片描述

public class Journey {public static void main(String[] args) {String s1 = "hspedu";Animal a = new Animal(s1);Animal b = new Animal(s1);System.out.println(a==b);//false,因为此时的引用a和b各自指向堆中的不同的对象System.out.println(a.equals(b));//此处调用的是Animal类的equals方法,其没有重写,//所以比较的还是地址,so return falseSystem.out.println(a.name==b.name);//true,两个引用的name属性都是指向池中的“hspedu”的,so trueString s4 = new String("hspedu");String s5 = "hspedu";System.out.println(s1==s4);//false, 因为s1指向常量池中的hspedu,而s4是指向堆中的对象的,//其对象中的value数组指向常量池中的hspeduSystem.out.println(s4==s5);//false, 这里也是一样,s5直接指向池中的hspedu的,所以return falseString t1 = "hello" + s1;//此处涉及变量,则会先创建一个StringBuilder,然后把“hello”给append进去,//再把s1对应的字符串内容加进去,//最后给它返回个堆中的String给t1String t2 = "hellohspedu";//t2直接指向上一步创建好的常量池中的“hellohspedu”System.out.println(t1.intern()==t2);//true,注意,此中的t1.intern()是指向堆的,//但返回t1字符串在常量池中的地址,即常量池中的“hellohspedu”//t2本来就是指向常量池中的hellohspedu,所以,最后结果返回的是true       //intern()就是直接看池中的字符串}
}
class Animal{String name;public Animal(String name) {this.name = name;}
}

在这里插入图片描述

这篇关于关于String的一些常用方法的编程练习题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1128252

相关文章

504 Gateway Timeout网关超时的根源及完美解决方法

《504GatewayTimeout网关超时的根源及完美解决方法》在日常开发和运维过程中,504GatewayTimeout错误是常见的网络问题之一,尤其是在使用反向代理(如Nginx)或... 目录引言为什么会出现 504 错误?1. 探索 504 Gateway Timeout 错误的根源 1.1 后端

MySQL 表空却 ibd 文件过大的问题及解决方法

《MySQL表空却ibd文件过大的问题及解决方法》本文给大家介绍MySQL表空却ibd文件过大的问题及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考... 目录一、问题背景:表空却 “吃满” 磁盘的怪事二、问题复现:一步步编程还原异常场景1. 准备测试源表与数据

python 线程池顺序执行的方法实现

《python线程池顺序执行的方法实现》在Python中,线程池默认是并发执行任务的,但若需要实现任务的顺序执行,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋... 目录方案一:强制单线程(伪顺序执行)方案二:按提交顺序获取结果方案三:任务间依赖控制方案四:队列顺序消

SpringBoot通过main方法启动web项目实践

《SpringBoot通过main方法启动web项目实践》SpringBoot通过SpringApplication.run()启动Web项目,自动推断应用类型,加载初始化器与监听器,配置Spring... 目录1. 启动入口:SpringApplication.run()2. SpringApplicat

Python异步编程之await与asyncio基本用法详解

《Python异步编程之await与asyncio基本用法详解》在Python中,await和asyncio是异步编程的核心工具,用于高效处理I/O密集型任务(如网络请求、文件读写、数据库操作等),接... 目录一、核心概念二、使用场景三、基本用法1. 定义协程2. 运行协程3. 并发执行多个任务四、关键

使用Java读取本地文件并转换为MultipartFile对象的方法

《使用Java读取本地文件并转换为MultipartFile对象的方法》在许多JavaWeb应用中,我们经常会遇到将本地文件上传至服务器或其他系统的需求,在这种场景下,MultipartFile对象非... 目录1. 基本需求2. 自定义 MultipartFile 类3. 实现代码4. 代码解析5. 自定

Python文本相似度计算的方法大全

《Python文本相似度计算的方法大全》文本相似度是指两个文本在内容、结构或语义上的相近程度,通常用0到1之间的数值表示,0表示完全不同,1表示完全相同,本文将深入解析多种文本相似度计算方法,帮助您选... 目录前言什么是文本相似度?1. Levenshtein 距离(编辑距离)核心公式实现示例2. Jac

AOP编程的基本概念与idea编辑器的配合体验过程

《AOP编程的基本概念与idea编辑器的配合体验过程》文章简要介绍了AOP基础概念,包括Before/Around通知、PointCut切入点、Advice通知体、JoinPoint连接点等,说明它们... 目录BeforeAroundAdvise — 通知PointCut — 切入点Acpect — 切面

C++ STL-string类底层实现过程

《C++STL-string类底层实现过程》本文实现了一个简易的string类,涵盖动态数组存储、深拷贝机制、迭代器支持、容量调整、字符串修改、运算符重载等功能,模拟标准string核心特性,重点强... 目录实现框架一、默认成员函数1.默认构造函数2.构造函数3.拷贝构造函数(重点)4.赋值运算符重载函数

C#高效实现Word文档内容查找与替换的6种方法

《C#高效实现Word文档内容查找与替换的6种方法》在日常文档处理工作中,尤其是面对大型Word文档时,手动查找、替换文本往往既耗时又容易出错,本文整理了C#查找与替换Word内容的6种方法,大家可以... 目录环境准备方法一:查找文本并替换为新文本方法二:使用正则表达式查找并替换文本方法三:将文本替换为图