题目代码
import java.util.Scanner;
public class StringDemo1 {
public static void main(String[] args) {
// 1.键盘输入
Scanner sc=new Scanner(System.in);
System.out.println("请输入一个字符串");
String str=sc.next();
// 2.判断是否符合规则
boolean flag=checkStr(str);
if(flag==true)
{
System.out.println("符合");
}
else
System.out.println("不符合");
// 3.查表法:数字跟数据产生一个对应关系
for (int i = 0; i < str.length(); i++) {
char c=str.charAt(i);
// 这里的c是字符,可以通过ASCII码的转化
int number=c-48;
// int number=c-'0';
String result=changeLuoMa(number);
System.out.print(result);
}
}
public static String changeLuoMa(int number){
// Ⅰ, Ⅱ , Ⅲ ,Ⅳ ,Ⅴ ,Ⅵ ,Ⅶ ,Ⅷ ,Ⅸ ,Ⅹ ,Ⅺ ,Ⅻ
// 定义一个数组,让索引和罗马数字产生一个对应关系
String[] arr={"","Ⅰ","Ⅱ","Ⅲ","Ⅳ","Ⅴ","Ⅵ","Ⅶ","Ⅷ","Ⅸ","Ⅹ","Ⅺ","Ⅻ"};
return arr[number];
}
public static boolean checkStr(String str){
// 要求1 长度小于等于9
if(str.length()>9){
return false;
}
// 要求2 只能是数字
for (int i = 0; i <str.length(); i++) {
char c=str.charAt(i);
// charAt(i) 就是在第i个位置的字符。从字符串从左向右数,第i个
if (c<'0'||c>'9'){
return false;
}
}
return true;
}
}
灵感💡
查表法
当我们想要在字符串中替换时可以采用查表法
查表法:数字跟数据产生一个对应关系
题目中是想将1替换为Ⅰ,Ⅰ是数组的第二个,索引为1,和数字1相对应,这样在输出索引为1的数组元素时就是Ⅰ啦!
charAt()
char c = charAt(i)
就是从字符串从左向右数在第i个位置的字符当我们想要去分开数组直接的元素时可以用charAt()方法