字符串的综合练习

1、练习-转换罗马数字

键盘录入一个字符串

要求1:长度为小于等于9

要求2:只能是数字

将内容变成罗马数字

下面是阿拉伯数字跟罗马数字的对比关系:

Ⅰ-1

Ⅱ-2

Ⅲ-3

Ⅳ-4

Ⅴ-5

Ⅵ-6

Ⅶ-7

Ⅷ-8

Ⅸ-9

注意点:罗马数字里面没有0的,如果键盘录入的数字包含0,可以变成”“(长度为0的字符串)

2、第一种解题思想(查表法)

package stringdemo;import java.util.Scanner;public class Test {public static void main(String[] args) {Scanner sc = new Scanner(System.in);String str;while (true) {System.out.println("请输入一个字符串");str = sc.next();boolean flag = checkStr(str);if (flag) {break;} else {System.out.println("当前的字符串不符合规则,请重新输入");continue;}}StringBuilder sb = new StringBuilder();for (int i = 0; i < str.length(); i++) {char c = str.charAt(i);int number = c - 48;String s = changeLuoMa(number);sb.append(s);}System.out.println(sb);}/*Ⅰ-1   Ⅱ-2     Ⅲ-3     Ⅳ-4     Ⅴ-5     Ⅵ-6     Ⅶ-7     Ⅷ-8    Ⅸ-9
*/public static String changeLuoMa(int number) {String[] arr = {"", "Ⅰ", "Ⅱ", "Ⅲ", "Ⅳ", "Ⅴ", "Ⅵ", "Ⅶ", "Ⅷ", "Ⅸ"};return arr[number];}public static boolean checkStr(String string) {if (string.length() > 9) {return false;}for (int i = 0; i < string.length(); i++) {char c = string.charAt(i);if (c < '0' || c > '9') {return false;}}return true;}}
D:\Java\jdk-17\bin\java.exe "-javaagent:D:\BaiduNetdiskDownload\IntelliJ IDEA 2023.2\lib\idea_rt.jar=2084:D:\BaiduNetdiskDownload\IntelliJ IDEA 2023.2\bin" -Dfile.encoding=UTF-8 -classpath F:\IdeaProjects\JavaSenior\out\production\Exception stringdemo.Test
请输入一个字符串
123456789
ⅠⅡⅢⅣⅤⅥⅦⅧⅨProcess finished with exit code 0

3、第二种解题思想(switch)

package stringdemo;import java.util.Scanner;public class TestCase {public static void main(String[] args) {Scanner sc = new Scanner(System.in);String str;while (true) {System.out.println("请输入一个字符串");str = sc.next();boolean flag = checkStr(str);if (flag) {break;} else {System.out.println("当前的字符串不符合规则,请重新输入");continue;}}StringBuilder sb = new StringBuilder();for (int i = 0; i < str.length(); i++) {char c = str.charAt(i);String s = changeLuoMa(c);sb.append(s);}System.out.println(sb);}/*Ⅰ-1   Ⅱ-2     Ⅲ-3     Ⅳ-4     Ⅴ-5     Ⅵ-6     Ⅶ-7     Ⅷ-8    Ⅸ-9*/public static String changeLuoMa(char number) {String str = switch (number) {case '0' -> "";case '1' -> "Ⅰ";case '2' -> "Ⅱ";case '3' -> "Ⅲ";case '4' -> "Ⅳ";case '5' -> "Ⅴ";case '6' -> "Ⅵ";case '7' -> "Ⅶ";case '8' -> "Ⅷ";case '9' -> "Ⅸ";default -> str = "";};return str;}public static boolean checkStr(String string) {if (string.length() > 9) {return false;}for (int i = 0; i < string.length(); i++) {char c = string.charAt(i);if (c < '0' || c > '9') {return false;}}return true;}
}
D:\Java\jdk-17\bin\java.exe "-javaagent:D:\BaiduNetdiskDownload\IntelliJ IDEA 2023.2\lib\idea_rt.jar=2435:D:\BaiduNetdiskDownload\IntelliJ IDEA 2023.2\bin" -Dfile.encoding=UTF-8 -classpath F:\IdeaProjects\JavaSenior\out\production\Exception stringdemo.TestCase
请输入一个字符串
123456789
ⅠⅡⅢⅣⅤⅥⅦⅧⅨProcess finished with exit code 0

4、调正字符串

给定两个字符串,A和B

A的旋转操作就是将A最左边的字符移动到最右边。

例如,若A='abcde',在移动一次之后结果就是'bcdea'。

如果在若干次调整操作之后,A能变成B,那么返回True。

如果不能匹配成功,则返回false

4.1、如果我们看到要修改字符串的内容,可以有两种方法:

  1. 用subString进行截取,把左边的字符截取出来拼接到右侧去
  2. 可以把字符串先变成一个字符数组,然后调整字符数组里面数据,最后再把字符数组变成字符串。

4.1.1、第一种思路(subString)

​package stringdemo;public class Case1 {public static void main(String[] args) {String strA = "abcde";String strB = "cdeab";boolean result = check(strA, strB);System.out.println(result);}public static boolean check(String strA, String strB) {for (int i = 0; i < strA.length(); i++) {strA = rotate(strA);if (strA.equals(strB)) {return true;}}return false;}public static String rotate(String str) {char first = str.charAt(0);String end = str.substring(1);return end + first;}
}
D:\Java\jdk-17\bin\java.exe "-javaagent:D:\BaiduNetdiskDownload\IntelliJ IDEA 2023.2\lib\idea_rt.jar=3417:D:\BaiduNetdiskDownload\IntelliJ IDEA 2023.2\bin" -Dfile.encoding=UTF-8 -classpath F:\IdeaProjects\JavaSenior\out\production\Exception stringdemo.Case1
trueProcess finished with exit code 0​

4.1.2、第二种思路

package stringdemo;public class Case2 {public static void main(String[] args) {String strA = "abcde";String strB = "cdeab";boolean result = check(strA, strB);System.out.println(result);}public static boolean check(String strA, String strB) {for (int i = 0; i < strA.length(); i++) {strA = rotate(strA);if (strA.equals(strB)) {return true;}}return false;}public static String rotate(String str) {char[] arr = str.toCharArray();char first = arr[0];for (int i = 1; i < arr.length; i++) {arr[i - 1] = arr[i];}arr[arr.length - 1] = first;String result = new String(arr);return result;}
}
D:\Java\jdk-17\bin\java.exe "-javaagent:D:\BaiduNetdiskDownload\IntelliJ IDEA 2023.2\lib\idea_rt.jar=3381:D:\BaiduNetdiskDownload\IntelliJ IDEA 2023.2\bin" -Dfile.encoding=UTF-8 -classpath F:\IdeaProjects\JavaSenior\out\production\Exception stringdemo.Case2
trueProcess finished with exit code 0

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/39018.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

51单片机的管脚介绍

图文介绍 纯文字说明 单片机管脚相关结构及其作用如下 电源正极引脚 一般接5V电源&#xff0c;为单片机提供正常工作时的电压。 电源负极引脚 接地。然后才开始工作。 时钟引脚 18、19脚为时钟引脚&#xff08;XTAL2、XTAL1&#xff09;。单片机内部有大量的数字电路&a…

SringBoot-响应

响应数据 如何加载响应数据呢 其实在SpringBoot&#xff0c;已经有名为RessponseBody的方法注解为我们提供的响应的方法&#xff0c;他的作用是将方法返回值直接响应&#xff0c;如果返回值类型为实体对象/集合&#xff0c;则会转换为JSON格式响应。 而RestController已经在内…

Java真实面试题,offer已到手

关于学习 在黑马程序员刚刚开始的时候学习尽头非常足&#xff0c;到后面逐渐失去了一些兴趣&#xff0c;以至于后面上课会出现走神等问题&#xff0c;但是毕业时后悔晚矣。等到开始学习项目一的时候&#xff0c;思路总会比别人慢一些&#xff0c;不看讲义写不出来代码。 建议…

Lie group 专题:Lie 群

Lie group 专题&#xff1a;Lie 群 流形 流形的定义 一个m维流形是满足以下条件的集合M&#xff1a;存在可数多个称为坐标卡&#xff08;图集&#xff09;的子集合族.以及映到的连通开子集上的一对一映射&#xff0c;,称为局部坐标映射&#xff0c;满足以下条件 坐标卡覆盖M…

【Sklearn】基于多层感知器算法的数据分类预测(Excel可直接替换数据)

【Sklearn】基于多层感知器算法的数据分类预测(Excel可直接替换数据) 1.模型原理2.模型参数3.文件结构4.Excel数据5.下载地址6.完整代码7.运行结果1.模型原理 多层感知器(Multilayer Perceptron,MLP)是一种前馈神经网络,用于解决分类和回归问题。它包含输入层、若干个隐…

【数学建模】--灰色关联分析

系统分析: 一般的抽象系统&#xff0c;如社会系统&#xff0c;经济系统&#xff0c;农业系统&#xff0c;生态系统&#xff0c;教育系统等都包含有许多种因素&#xff0c;多种因素共同作用的结果决定了该系统的发展态势。人们常常希望知道在众多的因素中&#xff0c;哪些是主要…

leetcode 面试题 02.05 链表求和

⭐️ 题目描述 &#x1f31f; leetcode链接&#xff1a;面试题 02.05 链表求和 ps&#xff1a; 首先定义一个头尾指针 head 、tail&#xff0c;这里的 tail 是方便我们尾插&#xff0c;每次不需要遍历找尾&#xff0c;由于这些数是反向存在的&#xff0c;所以我们直接加起来若…

深入理解设计模式-行为型之观察者

概述 观察者模式&#xff08;Observer Pattern&#xff09;是一种行为型设计模式&#xff0c;它定义了一种一对多的依赖关系&#xff0c;让多个观察者对象同时监听一个主题对象&#xff0c;当主题对象发生变化时&#xff0c;所有依赖于它的观察者对象都会得到通知并更新。 在…

如何安装Python?

如何安装Python&#xff1f; 安装Python非常简单&#xff0c;让我们一步步来进行。 1. 访问官方网站 首先&#xff0c;您需要访问Python官方网站&#xff08;https://www.python.org/&#xff09;。在首页上&#xff0c;您会看到一个大大的「Downloads」按钮&#xff0c;点击…

【Redis实践篇】使用Redisson 优雅实现项目实践过程中的5种场景

文章目录 1.前言2.使用方式1. 添加Redisson依赖&#xff1a;2. 配置Redis连接信息3. 使用场景3.1. 分布式锁3.2. 限流器&#xff08;Rate Limiter&#xff09;3.3. 可过期的对象&#xff08;Expirable Object&#xff09;3.4. 信号量&#xff08;Semaphore&#xff09;3.5. 分布…

ChatGPT在智能文档搜索和信息抽取中的应用如何?

智能文档搜索和信息抽取是信息检索和知识管理领域中的关键问题&#xff0c;而ChatGPT作为一种强大的自然语言处理模型&#xff0c;正在这些领域发挥越来越重要的作用。在大数据时代&#xff0c;文档数量庞大&#xff0c;信息量巨大&#xff0c;有效地搜索和抽取信息变得至关重要…

spfa判断负环

思路&#xff1a; &#xff08;1&#xff09;负环&#xff1a;区别于正环&#xff0c;在求最短路过程中&#xff0c;正环会绕路&#xff0c;故不会被讨论&#xff0c;而负环会不断让路总权更短&#xff0c;会让算法不断循环&#xff1b; &#xff08;2&#xff09;于是考虑统…

JVM---垃圾回收算法介绍

目录 分代收集理论 三种垃圾回收算法 标记-清除算法&#xff08;最基础的、基本不用&#xff09; 标记-复制算法 标记-整理算法 正式因为jvm有了垃圾回收机制&#xff0c;作为java开发者不会去特备关注内存&#xff0c;不像C和C。 优点&#xff1a;开发门槛低、安全 缺点…

windows Socket简单编程实例

服务端 #include <winsock2.h> #include <string.h> #include <stdio.h> #include <stdlib.h>#pragma comment(lib, "Ws2_32.lib")void error_handing(const char* message) {fputs(message, stderr);fputc(\n, stderr);exit(1); } int mai…

任我行CRM系统存在 SQL注入漏洞[2023-HW]

任我行CRM系统存在 SQL注入漏洞 一、 产品简介二、 漏洞概述三、 复现环境四、 漏洞复现小龙POC又是一通哈拉少 五、 修复建议 免责声明&#xff1a;请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及…

学习ts(二)数据类型(接口和对象类型、数组类型)

interface 重名会重合到一起 如果两个interface名称相同&#xff0c;会把两个合到一起 重复定义同一个需要类型相同 不能多或者减少属性 设置任意key 当定义接口返回数据时&#xff0c;我们不确定接口会返回多少&#xff0c;知道所需要的固定属性&#xff0c;其余属性可以…

学习笔记十四:K8S最小调度单元POD概述

K8S最小调度单元POD概述 k8s核心资源Pod介绍Pod是什么Pod如何管理多个容器Pod网络Pod存储代码自动发版更新收集业务日志 Pod工作方式自主式Pod控制器管理的Pod(防误删除) 如何基于Pod运行应用 k8s核心资源Pod介绍 K8s官方文档&#xff1a;https://kubernetes.io/ K8s中文官方文…

【博客692】grafana如何解决step动态变化时可能出现range duration小于step

grafana如何解决step动态变化时可能出现range duration小于step 1、grafana中的step和resolution grafana中的 “step” grafana本身是没有提供step参数的&#xff0c;因为仪表盘根据查询数据区间以及仪表盘线条宽度等&#xff0c;对于不同查询&#xff0c;相同的step并不能…

校园外卖小程序怎么做

校园外卖小程序是为满足校园内学生和教职员工的外卖需求而开发的一种应用程序。它涵盖了从用户端、商家端、骑手端、电脑管理员到小票打印、多商户入驻等多个方面的功能&#xff0c;以下将逐一介绍。 1. 用户端功能&#xff1a;校园外卖小程序为用户提供了便捷的订餐和外卖服务…

Zmq适配Win7 SP0 / Win XP/ Win 2k

1.目的 由于发布版本的libzmq使用了较多新的系统特性&#xff0c;导致在低版本windows平台上无法使用。 因此&#xff0c;需要对zmq源码进行修改以适配低版本的系统&#xff0c;如Win7 SP0&#xff0c;Win XP&#xff0c;Win2003等等。 2.Win7 SP0 #if defined ZMQ_HAVE_WIN…