阿拉伯数字转罗马数字

描述:

该程序通过用户输入一个数字字符串,将其转换为对应的罗马数字表示,并输出。程序首先通过Scanner类获取用户输入,然后使用check()函数验证输 入是否合法(长度不超过9且仅包含数字)。若输入合法,则使用StringBuilder类创建一个字符串拼接对象sb,通过循环遍历输入字符串的每个字符,将 其转换为对应的罗马数字并以空格分隔,最后输出。changLuoMa()函数用于将数字转换为罗马数字。该程序提供了两种实现方法:方法一使用数组映射,方法二使用switch语句。

package StringBuilder;

import java.util.Scanner;

public class Demo5 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入数字:");
        String str;
        while (true) {
            str = sc.next();
            if (check(str)) {
                break;
            } else {
                System.out.println("输入有误,请重新输入......");
            }
        }
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < str.length(); i++) {
            sb.append(changLuoMa(str.charAt(i) - 48)).append(" ");
        }
        System.out.println(sb);
    }

    //方法一
    //    public static String changLuoMa(int number){
    //        String[] arr = {"","I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX"};
    //        return arr[number];
    //    }
    
    //方法二
    public static String changLuoMa(int number) {
        String s = "";
        switch (number) {
            case 0 -> s = "";
            case 1 -> s = "I";
            case 2 -> s = "II";
            case 3 -> s = "III";
            case 4 -> s = "IV";
            case 5 -> s = "V";
            case 6 -> s = "VI";
            case 7 -> s = "VII";
            case 8 -> s = "VIII";
            case 9 -> s = "IX";
            default -> s = "";
        }
        return s;
    }

    //当某个变量需要满足多个条件时,可使用如下方式进行判断
    public static boolean check(String str) {
        if (str.length() > 9) {
            return false;
        }
        for (int i = 0; i < str.length(); i++) {
            if (str.charAt(i) < '0' || str.charAt(i) > '9') {
                return false;
            }
        }
        return true;
    }
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值