第一种:用查表法
package com.zhao.stringtest;
import java.util.Scanner;
public class Test8Case1 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
String str;
//Ctrl+Alt+T 快速构建while循环包裹
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);
//Ascii码表 得到的char类型减去表示'0'的48得到int类型的数字
int number=c-48;
//拿到每一个数字所对应的罗马字符,并进行拼接
String s=replaceStr(number);
sb.append(s);
}
String newStr=sb.toString();
System.out.println(newStr);
}
//编写校验方法
public static boolean checkStr(String string){
//1.长度小于等于9
if (string.length()>9){
return false;
}
//2.只能是数字
for (int i = 0; i < string.length(); i++) {
char c=string.charAt(i);
//char类型在进行比较时会自动提升为int类型
if (c<'0'||c>'9'){
return false;
}
}
//只有当所有字符全部判断完毕后,才能返回true
return true;
}
//编写替换方法
//查表法
public static String replaceStr(int number){
//因为只有数字,所以可以获取每一位数字来返回对应索引的罗马数字
String[] strs={"","Ⅰ","Ⅱ","Ⅲ","Ⅳ","Ⅴ","Ⅵ","Ⅶ","Ⅷ","Ⅸ"};
return strs[number];
}
}
第二种:用Switch匹配替换
package com.zhao.stringtest;
import java.util.Scanner;
public class Test8Case2 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
String str;
//Ctrl+Alt+T 快速构建while循环包裹
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=replaceStr(c);
sb.append(s);
}
String newStr=sb.toString();
System.out.println(newStr);
}
//编写校验方法
public static boolean checkStr(String string){
//1.长度小于等于9
if (string.length()>9){
return false;
}
//2.只能是数字
for (int i = 0; i < string.length(); i++) {
char c=string.charAt(i);
//char类型在进行比较时会自动提升为int类型
if (c<'0'||c>'9'){
return false;
}
}
//只有当所有字符全部判断完毕后,才能返回true
return true;
}
//编写替换方法
//switch匹配
public static String replaceStr(int number){
String str;
switch (number){
case '0' :
str="";
break;
case '1' :
str="Ⅰ";
break;
case '2' :
str="Ⅱ";
break;
case '3' :
str="Ⅲ";
break;
case '4' :
str="Ⅳ";
break;
case '5' :
str="Ⅴ";
break;
case '6' :
str="Ⅵ";
break;
case '7' :
str="Ⅶ";
break;
case '8' :
str="Ⅷ";
break;
case '9' :
str="Ⅸ";
break;
default:
str="";
break;
}
return str;
}
}