1.将字符串转换成罗马数字
eg:1234 ->ⅠⅡⅢⅣ
要求:①长度为小于等于9
②只能是数字,将内容变成罗马数字,罗马数字里是没有零的,可以变成长度为0的字符串
方法一:(查表法)
public class Test{
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
while(true){
System.out.println("请输入字符串");
String str=sc.next();
boolean flag=checkString(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 romanNumber=changeRoman(number);
sb.append(romanNumber);
}
System.out.println(sb);
}
}
public static String changeRoman(int number){
String[] romanArr={"","Ⅰ","Ⅱ","Ⅲ","Ⅳ","Ⅴ","Ⅵ","Ⅶ","Ⅷ","Ⅸ"};
return romanArr[number];
}
public static boolean checkString(String str){
if(str.length()>9){
return false;
}
for(int i=0;i<str.length();i++){
char c=str.charAt(i);
if(c<'0'||c>'9'){
return false;
}
}
return true;
}
方法二:
我们可以用switch语句将上面的字符串“1234”转换为“ⅠⅡⅢⅣ”。
public class Test{
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
while(true){
System.out.println("请输入字符串");
String str=sc.next();
boolean flag=checkString(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 romanNumber=changeRoman(c);
sb.append(romanNumber);
}
System.out.println(sb);
}
}
public static String changeRoman(char c){
String str=switch(c){
case'0'->"";
case'1'->"Ⅰ";
case'2'->"Ⅱ";
case'3'->"Ⅲ";
case'4'->"Ⅳ";
case'5'->"Ⅴ";
case'6'->"Ⅵ";
case'7'->"Ⅶ";
case'8'->"Ⅷ";
case'9'->"Ⅸ";
default->"";
};//注意此处有分号
return str;
}
public static boolean checkString(String str){
if(str.length()>9){
return false;
}
for(int i=0;i<str.length();i++){
char c=str.charAt(i);
if(c<'0'||c>'9'){
return false;
}
}
return true;
}
2.旋转字符串
要求:给定两个字符串,A和B。A的旋转操作就是将A最左边的字符移动到最右边。例如
若A=”abcde“,在移动一次之后结果就是“bcdea”,如果在若干次调整操作之后,A能变回B,那么返回true,如果不能匹配成功,则返回false。
1.利用substring截取
public class Test{
public static void main(String[] args){
String strA="abcdef";
String strB="bcdea";
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;
}
2.将字符串变成字符数组
public class Test{
public static void main(String[] args){
String strA="abcdef";
String strB="bcdea";
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;
}
3.生成验证码
要求:可以是小写字母,也可以是大写字母,还可以是数字
长度为5,内容中是4位字母,一位数字,其中数字只有一位,但是可以出现在仁义的位置

将字符数组变化成字符串,可以用字符串类自带的构造方法。
文章提供了两种Java方法将数字字符串转换为罗马数字,以及检查字符串是否符合规则。另外,还展示了如何通过字符串截取和字符数组操作实现字符串旋转,用于判断两个字符串是否可以通过旋转匹配。此外,文章提及了生成包含4位字母和1位数字的5位验证码的规范。
&spm=1001.2101.3001.5002&articleId=129063081&d=1&t=3&u=1bfb380fb9cc43c797c567a31eba236e)
1555

被折叠的 条评论
为什么被折叠?



