首页 > 编程语言 >java基础练习--字符串之罗马数字转换--两种转换方法

java基础练习--字符串之罗马数字转换--两种转换方法

时间:2024-09-19 21:22:56浏览次数:3  
标签:case java String -- 转换方法 str 字符串 return public

方法1:查表法

 //数字-->罗马字符
    public static String changeLuoMa(int number){
        String[] arr = {"","Ⅰ","Ⅱ","Ⅲ","Ⅳ","Ⅴ","Ⅵ","Ⅶ","Ⅷ","Ⅸ",};

        return arr[number];

    }

完整代码:


import java.util.Scanner;

public class Test1Case1 {
    public static void main(String[] args) {

        //键盘录入字符串
        Scanner sc = new Scanner(System.in);
        String str;
        //条件判断
        while (true) {
            str = sc.next();
            boolean flag = checkStr(str);
            if (flag){
                break;
            }else {
                System.out.println("当前字符串不符合规则,请重新输入");
                continue;
            }
        }

        StringBuilder sb = new StringBuilder();//罗马字符拼接用StringBuilder
        for (int i = 0; i < str.length(); i++) {
            char c = str.charAt(i);
            int number = c - 48;//数字字符-->数字
            String s = changeLuoMa(number);
            sb.append(s);
        }

        System.out.println(sb);
    }
    //数字-->罗马字符
    public static String changeLuoMa(int number) {
        String[] arr = {"", "Ⅰ", "Ⅱ", "Ⅲ", "Ⅳ", "Ⅴ", "Ⅵ", "Ⅶ", "Ⅷ", "Ⅸ",};
        return arr[number];
    }

    //判断录入的字符串是否满足条件:
    //1.字符串<=9
    //2.字符串只能是数字
    public static boolean checkStr(String str){

        if (str.length()>9){
            return false;
        }
        for (int i = 0; i < str.length(); i++) {//遍历字符串
            char c = str.charAt(i);
            if (c<'0'||c>'9'){
                return false;
            }
        }
        return true;
    }
}

方法2:switch语句

 //数字-->罗马字符
    public static String changeLuoMa(char c){

        String str = switch (c){
            case '0'->"";
            case '1'->"Ⅰ";
            case '2'->"Ⅱ";
            case '3'->"Ⅲ";
            case '4'->"Ⅳ";
            case '5'->"Ⅴ";
            case '6'->"Ⅵ";
            case '7'->"Ⅶ";
            case '8'->"Ⅷ";
            case '9'->"Ⅸ";
            default->str = "";
        };
        return str;
    }

完整代码:

import java.util.Scanner;

public class Test1Case2 {
    public static void main(String[] args) {

        //键盘录入字符串
        Scanner sc = new Scanner(System.in);
        String str;
        //条件判断
        while (true) {
            str = sc.next();
            boolean flag = checkStr(str);
            if (flag){
                break;
            }else {
                System.out.println("当前字符串不符合规则,请重新输入");
                continue;
            }
        }

       StringBuilder sb = new StringBuilder();//罗马字符拼接用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(char c){

        String str = switch (c){
            case '0'->"";
            case '1'->"Ⅰ";
            case '2'->"Ⅱ";
            case '3'->"Ⅲ";
            case '4'->"Ⅳ";
            case '5'->"Ⅴ";
            case '6'->"Ⅵ";
            case '7'->"Ⅶ";
            case '8'->"Ⅷ";
            case '9'->"Ⅸ";
            default->str = "";
        };
        return str;
    }

    //判断录入的字符串是否满足条件:
    //1.字符串<=9
    //2.字符串只能是数字
    public static boolean checkStr(String str){

        if (str.length()>9){
            return false;
        }
        for (int i = 0; i < str.length(); i++) {//遍历字符串
            char c = str.charAt(i);
            if (c<'0'||c>'9'){
                return false;
            }
        }
        return true;
    }
}

标签:case,java,String,--,转换方法,str,字符串,return,public
From: https://blog.csdn.net/2301_76718736/article/details/142367790

相关文章

  • Android静态轮播图
    在Android中实现静态轮播图,通常指的是在一个固定的布局中显示一系列图片,并且这些图片会按照一定的时间间隔自动切换。这种效果可以通过多种方式实现,比如使用ViewPager结合PagerAdapter,或者使用ViewFlipper等组件。下面我将给出一个基于ViewPager的简单示例。使用ViewPager实现轮播......
  • 瓦工交底你家做了吗?真的很重要
     有一个工地开始贴瓷砖,和业主约着一块去现场瓦工交底,业主买的瓷砖很有意思  先说一下为什么瓦工交底,瓦工包含的有包下水管,做防水贴墙砖和地砖。  瓦工交底最主要的就是确定墙砖和地砖的排版方式。  如果业主买的瓷砖已经有了铺贴方案,这种情况就不用交底了,直接......
  • 什么是死锁?
    死锁的概念:死锁(Deadlock)是指两个或多个进程(线程)在竞争资源时,互相等待对方释放资源,从而陷入无限等待的状态。死锁产生的必要条件:互斥条件(MutualExclusion):资源不能共享,只能被一个进程或线程占用。占有且等待条件(HoldandWait):一个线程已经占有了一个资源,同时还在等待其他......
  • Java JNA、JNI、ProcessBuilder、Runtime.getRuntime.exec()详解
     Java提供了几种方式与非Java代码进行交互(比如调用本地库或执行外部程序),其中包括JNA、JNI、ProcessBuilder和Runtime.getRuntime().exec()。下面是对每种方式的详细解释。1.JNA(JavaNativeAccess)简介JNA是Java与本地代码进行交互的一种高层次API,它允许Java程序调......
  • JavaScript高级——对象创建模式
    1、Object构造函数模式①套路:先创建空Object对象,再动态添加属性/方法②使用场景:起始时不确定对象内部数据③问题:语句太多2、对象字面量模式①套路:使用{  } 创建对象,同时指定属性/方法②适用场景:起始时对象内部数据是确定的③问题:如果创建多个对象,有重......
  • Android轻量级RTSP服务使用场景分析和设计探讨
    技术背景好多开发者,对我们Android平台轻量级RTSP服务模块有些陌生,不知道这个模块具体适用于怎样的场景,有什么优缺点,实际上,我们的Android平台轻量级RTSP服务模块更适用于内网环境下、对并发要求不高的场景,实现低成本、低延迟的音视频实时传输。本文就上述问题,做个技术探讨,先说适用场......
  • 解决使用nvm ls命令没有出现*的问题
    一、引言在输命令的时候不知道手误写了什么导致node命令用不了,查看环境变量配的nvm对应的路径没问题,试过网上说的修改文件夹名字但是没有用!!输入nvmls显示已下载的node版本,发现前面没有* 输入nvmuse使用其中的一个版本,没有报错一切正常!但是重新输入nvmls依旧没有......
  • 一文读懂DaemonSet以及实践攻略
    一文读懂DaemonSet以及实践攻略目录1概念1.1什么是DaemonSet1.2DaemonSet的工作机制1.3适用场景1.4DaemonSet与Deployment的区别1.5DaemonSet的通信模式2实践案例:部署和更新Fluentd日志收集器2.1部署FluentdDaemonSet2.1.1定义FluentdDaemonSet2.1.2......
  • EPSILON环境配置和本地测试
    文章目录一、环境配置1.1拉取镜像构建容器1.2在容器中安装常用的包1.3安装依赖1.4安装OOQP1.4.1安装blas1.4.2安装ma271.4.3安装OOQP1.5安装Protobuf二、本地编译测试2.1拉取源码并编译2.2X11转发docker图形化界面2.3测试一个小例子三、镜像一、环境配......
  • C++内存管理
    前言接下来我们继续学习C++的内存管理。1. C++/C中程序内存区域划分C++将内存区域划分为四个部分,分别是栈区,堆区,静态区,常量区。其中静态区又叫数据段,其中存储全局数据和动态数据。常量区又叫代码区,其中存储只读常量和可执行代码。栈里面存储函数参数,返回值,局部变量等。......