关于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

相关文章

Python中Tkinter GUI编程详细教程

《Python中TkinterGUI编程详细教程》Tkinter作为Python编程语言中构建GUI的一个重要组件,其教程对于任何希望将Python应用到实际编程中的开发者来说都是宝贵的资源,这篇文... 目录前言1. Tkinter 简介2. 第一个 Tkinter 程序3. 窗口和基础组件3.1 创建窗

Python字符串处理方法超全攻略

《Python字符串处理方法超全攻略》字符串可以看作多个字符的按照先后顺序组合,相当于就是序列结构,意味着可以对它进行遍历、切片,:本文主要介绍Python字符串处理方法的相关资料,文中通过代码介... 目录一、基础知识:字符串的“不可变”特性与创建方式二、常用操作:80%场景的“万能工具箱”三、格式化方法

springboot+redis实现订单过期(超时取消)功能的方法详解

《springboot+redis实现订单过期(超时取消)功能的方法详解》在SpringBoot中使用Redis实现订单过期(超时取消)功能,有多种成熟方案,本文为大家整理了几个详细方法,文中的示例代... 目录一、Redis键过期回调方案(推荐)1. 配置Redis监听器2. 监听键过期事件3. Redi

基于SpringBoot实现分布式锁的三种方法

《基于SpringBoot实现分布式锁的三种方法》这篇文章主要为大家详细介绍了基于SpringBoot实现分布式锁的三种方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、基于Redis原生命令实现分布式锁1. 基础版Redis分布式锁2. 可重入锁实现二、使用Redisso

自定义注解SpringBoot防重复提交AOP方法详解

《自定义注解SpringBoot防重复提交AOP方法详解》该文章描述了一个防止重复提交的流程,通过HttpServletRequest对象获取请求信息,生成唯一标识,使用Redis分布式锁判断请求是否... 目录防重复提交流程引入依赖properties配置自定义注解切面Redis工具类controller

Java调用DeepSeek API的8个高频坑与解决方法

《Java调用DeepSeekAPI的8个高频坑与解决方法》现在大模型开发特别火,DeepSeek因为中文理解好、反应快、还便宜,不少Java开发者都用它,本文整理了最常踩的8个坑,希望对... 目录引言一、坑 1:Token 过期未处理,鉴权异常引发服务中断问题本质典型错误代码解决方案:实现 Token

Nginx 访问控制的多种方法

《Nginx访问控制的多种方法》本文系统介绍了Nginx实现Web访问控制的多种方法,包括IP黑白名单、路径/方法/参数控制、HTTP基本认证、防盗链机制、客户端证书校验、限速限流、地理位置控制等基... 目录一、IP 白名单与黑名单1. 允许/拒绝指定IP2. 全局黑名单二、基于路径、方法、参数的访问控制

Python中Request的安装以及简单的使用方法图文教程

《Python中Request的安装以及简单的使用方法图文教程》python里的request库经常被用于进行网络爬虫,想要学习网络爬虫的同学必须得安装request这个第三方库,:本文主要介绍P... 目录1.Requests 安装cmd 窗口安装为pycharm安装在pycharm设置中为项目安装req

nginx跨域访问配置的几种方法实现

《nginx跨域访问配置的几种方法实现》本文详细介绍了Nginx跨域配置方法,包括基本配置、只允许指定域名、携带Cookie的跨域、动态设置允许的Origin、支持不同路径的跨域控制、静态资源跨域以及... 目录一、基本跨域配置二、只允许指定域名跨域三、完整示例四、配置后重载 nginx五、注意事项六、支持

MySQL查看表的历史SQL的几种实现方法

《MySQL查看表的历史SQL的几种实现方法》:本文主要介绍多种查看MySQL表历史SQL的方法,包括通用查询日志、慢查询日志、performance_schema、binlog、第三方工具等,并... 目录mysql 查看某张表的历史SQL1.查看MySQL通用查询日志(需提前开启)2.查看慢查询日志3.