Java-字符串练习4
·
练习1 转换罗马数字

package com.lkbhua.Test;
import java.util.Scanner;
public class test09 {
public static void main(String[] args) {
/* 转换为罗马数字
* 要求:长度不能超过9
* 只能是数字
* 1-3: I, II, III 罗马数字是没有0,0用“ ”替代* */
Scanner sc = new Scanner(System.in);
String str;
while( true){
// 1、键盘录入一个字符串
System.out.println("请输入一个数字字符串:");
str = sc.next();
// 2、校验输入的字符串
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);
System.out.println(c);
// 转换字符串为数字
int number = c - 48;
String s = change( number);
System.out.print(s);
// 字符串拼接
sb.append(s);
}
System.out.println(sb.toString());
}
// 转换方法
public static String change(int number){
// 定义一个数组,让索引跟罗马数字形成对应关系
String[] romans = {" ", "Ⅰ", "Ⅱ", "Ⅲ", "Ⅳ", "Ⅴ", "Ⅵ", "Ⅶ", "Ⅷ", "Ⅸ"};
return romans[number];
}
// 校验方法
public static boolean checkStr(String str){
// 长度
if(str.length() > 9){
System.out.println("长度不能超过9");
return false;
}
// 只能是数字
for (int i = 0; i < str.length(); i++) {
char c = str.charAt(i); // 得到每一个字符
if(!(c >= '0' && c <= '9')){
System.out.println("只能是数字");
return false;
}
}
return true;
}
}
练习2 调整字符串

package com.lkbhua.Test;
import java.util.Scanner;
public class test10case1 {
public static void main(String[] args) {
/* 调整字符串
* 给定两个字符串A和B,旋转就是将A最左边的字符移动到最右边。
* 比如A=abcde,B=cdeab,旋转之后A变为cdeab,B变为abcde。
* 要求判断A是否可以通过旋转得到B。* */
// 1、定义两个字符串
Scanner sc =new Scanner(System.in);
System.out.println("请输入第一个字符串:");
String strA = sc.next();
System.out.println("请输入第二个字符串:");
String strB = sc.next();
// 2、旋转字符串
strA = rotate(strA);
System.out.println("旋转后的字符串为:"+strA);
// 循环旋转并比较
boolean flag = check(strA,strB);
System.out.println("两个字符串是否可以通过旋转得到:"+flag);
}
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){
// 套路:
// 如果我们看到要修改字符串中的内容
// case1:用subString进行截取,把左边的截取出来拼接到有右边去
// case2:把字符串先变成一个数组,然后进行操作,最后再变成字符串
// case1:
// 获取最左边的字符
char first = str.charAt(0);
// 剩余字符
String end = str.substring(1);
return end + first;
}
}
声明:
以上均来源于B站@ITheima的教学内容!!!
本人跟着视频内容学习,整理知识引用
更多推荐



所有评论(0)