StringBuilder小练习:罗马数字的转换两种方法

package StringJoiner;
import java.util.Scanner;
/*罗马数字的两种写法--转换罗马数字
 *键盘录入一个字符串
 *要求1:长度为小于等于9
 *要求二:只能是数字
 *将内容变成罗马数字
 *下面是阿拉伯数字跟罗马数字的对比关系
 *注意:罗马数字里面没有0
 *如果键盘录入的数字包含0,可以变成“”(长度为0的字符串)*/

//第一种解题方法,用的是查表法

public class test3 {
      public static void main(String[]args) {
    	  //键盘录入一个字符串
    	  Scanner sc=new Scanner(System.in);
    	  String str;
    	  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);
    		  
    		  int number=c-48; // 1 2 3 4 5
    		  String s=changeLuoMa(number);
    		  sb.append(s);
    		  
    	  }
    	  System.out.println(sb);
      }
      public static String changeLuoMa(int number) {
    	  //定义一个数组,让索引和罗马数字产生一个对应关系
    	  String []arr= {"","I","II","III","IV","V","VI","VII","VIII","IX" };
          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++) {
    		  //i为数组的索引
    		  char c=str.charAt(i);  //0-9
    		  if(c<'0'||c>'9') {
    			  return false;
    		  }
    	  }
    	  //只有当字符串里面所有的字符全部都判断完毕了,才能认为当前的字符串是符合规则
    	  return true;
      }
}
package StringJoiner;
import java.util.Scanner;
/*罗马数字的两种写法--转换罗马数字
 *键盘录入一个字符串
 *要求1:长度为小于等于9
 *要求二:只能是数字
 *将内容变成罗马数字
 *下面是阿拉伯数字跟罗马数字的对比关系
 *注意:罗马数字里面没有0
 *如果键盘录入的数字包含0,可以变成“”(长度为0的字符串)*/

//第二种解题方法,用的是switch case的选择分支结构

public class test4 {
      public static void main(String[]args) {
    	  //键盘录入一个字符串
    	  Scanner sc=new Scanner(System.in);
    	  String str;
    	  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=changeLuoMa(c);
    		  sb.append(s);
    		  
    	  }
    	  System.out.println(sb);
      }
      //用switch进行匹配
      public static String changeLuoMa(char number) {
    	 String str=switch(number) {
    	 case '0'->"";
    	 case '1'->"I";
    	 case '2'->"II";
    	 case '3'->"III";
    	 case '4'->"IV";
    	 case '5'->"V";
    	 case '6'->"VI";
    	 case '7'->"VII";
    	 case '8'->"VII";
    	 case '9'->"IX";
    	 default->"";
    	 
    	 };
    	 return str;
      }
      public static boolean checkStr(String str) {
    	   //要求1:长度为小于等于9
    	  if(str.length()>9) {
    		  return false;
    	  }
    	  //要求2,只能是数字、
    	  for(int i=0;i<str.length();i++) {
    		  //i为数组的索引
    		  char c=str.charAt(i);  //0-9
    		  if(c<'0'||c>'9') {
    			  return false;
    		  }
    	  }
    	  //只有当字符串里面所有的字符全部都判断完毕了,才能认为当前的字符串是符合规则
    	  return true;
      }
}

罗马数字的两种写法--转换罗马数字
 *键盘录入一个字符串
 *要求1:长度为小于等于9
 *要求二:只能是数字
 *将内容变成罗马数字
 *下面是阿拉伯数字跟罗马数字的对比关系
 *注意:罗马数字里面没有0
 *如果键盘录入的数字包含0,可以变成“”(长度为0的字符串)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Komorebi_9999

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值