要求1:长度为小于等于9
要求2:只能是数字
将内容变成罗马数字
下面是阿拉伯数字跟罗马数字的对比关系
I-1、II-2、III-3、Ⅳ-4、Ⅴ-5、Ⅵ-6、Ⅶ-7、Ⅷ-8、Ⅸ-9
注意点:罗马数字里面是没有0的
如果键盘录入的数字包含0,可以变成” “(长度为0的字符串)
代码中包含两种将数字转换为罗马数字的方法
import java.util.*;
public class Test{
public static void main(String args[]) {
//1.录入字符串
Scanner sc=new Scanner(System.in);
String str;
while(true) {
System.out.println("请输入一个新的字符串");
str=sc.next();
//2.校验字符串是否满足规则
boolean flag=checkStr(str);
System.out.println("字符串判断结果是"+flag);
if(flag) {
break;
}else {
System.out.println("输入错误");
continue;
}}
StringJoiner sb=new StringJoiner(" ");
StringJoiner sb1=new StringJoiner(" ");
System.out.println("遍历字符串");
for(int i=0;i<str.length();i++) {
char c=str.charAt(i);
System.out.print(" "+c);
int number=c-48;
String s=changeLuoMa(number);
String s1=changeluoma(c);
sb.add(s);
sb1.add(s1);
}
System.out.println();
System.out.println("使用方法一进行输出"+sb);
System.out.println("使用方法二进行输出"+sb1);
}
public static boolean checkStr(String str) {
//1.要求:小于等于9
if(str.length()>9) {
System.out.println("长度大于9");
return false;
}
//2.要求:只能是数字
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;
}//设置一个方法将其转换为罗马数字
public static String changeLuoMa(int number) {
//定义一个数组,让索引与罗马数字产生对应关系
String[] arr= {"","Ⅰ","Ⅱ","Ⅲ","Ⅳ","Ⅴ","Ⅵ","Ⅶ","Ⅷ","Ⅸ"};
return arr[number];
}//设置方法二将其转化为罗马数字
public static String changeluoma(char number) {
String str;
switch(number) {
case '0'->str="";
case '1'->str="Ⅰ";
case '2'->str="Ⅱ";
case '3'->str="Ⅲ";
case '4'->str="Ⅳ";
case '5'->str="Ⅴ";
case '6'->str="Ⅵ";
case '7'->str="Ⅶ";
case '8'->str="Ⅷ";
case '9'->str="Ⅸ";
default->str="";
}
//switch的另一种写法
String str1=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;//或者return str2;
}
}