将阿拉伯数字变成罗马数字 案例

键盘录入一个字符串,

要求1:长度为小于等于9

要求2:只能是数字,将内容变成罗马数字

下面是阿拉伯数字跟罗马数字的对比关系:

Ⅰ-1、Ⅱ-2、Ⅲ-3、Ⅳ-4、Ⅴ-5、Ⅵ-6、Ⅶ-7、Ⅷ-8、Ⅸ-9

注意:罗马数字里面是没有0的,如果键盘录入的数字包含0,可以变成""(长度为0的字符串)

方法一:

/*
 * Copyright (c) 2017, 2023, zxy.cn All rights reserved.
 *
 */
package cn.stringbuilderdemo;

import java.util.Scanner;

/**
 * 

Description:将阿拉伯数字变成罗马数字 * 键盘录入一个字符串, * 要求1:长度为小于等于9 * 要求2:只能是数字,将内容变成罗马数字 * 下面是阿拉伯数字跟罗马数字的对比关系: * Ⅰ-1、Ⅱ-2、Ⅲ-3、Ⅳ-4、Ⅴ-5、Ⅵ-6、Ⅶ-7、Ⅷ-8、Ⅸ-9 * 注意:罗马数字里面是没有0的,如果键盘录入的数字包含0,可以变成""(长度为0的字符串)

*

Class:

*

Powered by zxy On 2023/6/9 21:30

* * @author zxy [[email protected]] * @version 1.0 * @since 17 */ public class TestCase1 { public static void main(String[] args) { //1.键盘录入一个字符串 //书写Scanner 的代码 Scanner sc = new Scanner(System.in); String str; while (true) { System.out.println("请输入一个字符串"); str = sc.next(); //2.校验字符串是否满足规则 boolean flag = checkStr(str); if (flag){ break; }else { System.out.println("当前的字符串不符合规则,请重新输入"); continue; } } //将内容变成罗马数字 // 下面是阿拉伯数字跟罗马数字的对比关系: // Ⅰ-1、Ⅱ-2、Ⅲ-3、Ⅳ-4、Ⅴ-5、Ⅵ-6、Ⅶ-7、Ⅷ-8、Ⅸ-9 //查表法:数字跟数据产生一个对应关系 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){ //定义一个数组,让索引跟罗马数字产生一个对应关系 //Ⅰ-1、Ⅱ-2、Ⅲ-3、Ⅳ-4、Ⅴ-5、Ⅵ-6、Ⅶ-7、Ⅷ-8、Ⅸ-9 String[] arr={"","Ⅰ","Ⅱ","Ⅲ","Ⅳ","Ⅴ","Ⅵ","Ⅶ","Ⅷ","Ⅸ"}; return arr[number]; } public static boolean checkStr(String str){//123456 //要求1:长度为小于等于9 if(str.length()>9){ return false; } // 要求2:只能是数字 for (int i = 0; i < str.length(); i++) { char c = str.charAt(i);//0-9 if (c<'0' || c>'9'){ return false; } } //只有当字符串里面所有的字符全都判断完毕了,我才能认为当前的字符串是符合规则 return true; } }

将阿拉伯数字变成罗马数字 案例_第1张图片

方法二:

使用switch方法

/*
 * Copyright (c) 2017, 2023, zxy.cn All rights reserved.
 *
 */
package cn.stringbuilderdemo;

import java.util.Scanner;

/**
 * 

Description:将阿拉伯数字变成罗马数字 * 键盘录入一个字符串, * 要求1:长度为小于等于9 * 要求2:只能是数字,将内容变成罗马数字 * 下面是阿拉伯数字跟罗马数字的对比关系: * Ⅰ-1、Ⅱ-2、Ⅲ-3、Ⅳ-4、Ⅴ-5、Ⅵ-6、Ⅶ-7、Ⅷ-8、Ⅸ-9 * 注意:罗马数字里面是没有0的,如果键盘录入的数字包含0,可以变成""(长度为0的字符串)

*

Class:

*

Powered by zxy On 2023/6/9 21:30

* * @author zxy [[email protected]] * @version 1.0 * @since 17 */ public class TestCase2 { public static void main(String[] args) { //1.键盘录入一个字符串 //书写Scanner 的代码 Scanner sc = new Scanner(System.in); String str; while (true) { System.out.println("请输入一个字符串"); str = sc.next(); //2.校验字符串是否满足规则 boolean flag = checkStr(str); if (flag){ break; }else { System.out.println("当前的字符串不符合规则,请重新输入"); continue; } } //将内容变成罗马数字 // 下面是阿拉伯数字跟罗马数字的对比关系: // Ⅰ-1、Ⅱ-2、Ⅲ-3、Ⅳ-4、Ⅴ-5、Ⅵ-6、Ⅶ-7、Ⅷ-8、Ⅸ-9 //查表法:数字跟数据产生一个对应关系 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); } public static String changeLuoMa(int number){ // String[] arr={"","Ⅰ","Ⅱ","Ⅲ","Ⅳ","Ⅴ","Ⅵ","Ⅶ","Ⅷ","Ⅸ"}; String str = 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; } public static boolean checkStr(String str){//123456 //要求1:长度为小于等于9 if(str.length()>9){ return false; } // 要求2:只能是数字 for (int i = 0; i < str.length(); i++) { char c = str.charAt(i);//0-9 if (c<'0' || c>'9'){ return false; } } //只有当字符串里面所有的字符全都判断完毕了,我才能认为当前的字符串是符合规则 return true; } }

将阿拉伯数字变成罗马数字 案例_第2张图片 

你可能感兴趣的:(经典案例,java,开发语言)