键盘输入一个数字字符串,将其转换为罗马数字

要求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;
	}
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值