• java 字符串练习(罗马数字的转换)


    方法一 

    思路:利用数字与数组索引匹配关系

    1. import java.util.Scanner;
    2. public class test {
    3. public static void main(String[] args) {
    4. String str;
    5. //键盘录入
    6. Scanner sc = new Scanner(System.in);
    7. System.out.println("请输入一个字符串");
    8. str = sc.next();
    9. while (true) {
    10. //校验录入的字符串是否满足要求
    11. boolean flag = ccc(str);
    12. if (flag){
    13. break;
    14. }else {
    15. System.out.println("不符合规则请重新输入!");
    16. continue;
    17. }
    18. }
    19. //将内容变成罗马数字
    20. // 查表法:数字和数组产生对应关系
    21. StringBuilder sbu = new StringBuilder();
    22. for (int i = 0; i < str.length(); i++) {
    23. char c = str.charAt(i);
    24. int number = c - 48; //48为数字0的编码
    25. //调用方法进行转换
    26. String s = change(number);
    27. //字符串拼接
    28. sbu.append(s);
    29. }
    30. //输出
    31. System.out.println(sbu);
    32. }
    33. //查表法的一个方法
    34. public static String change(int number){
    35. String[] arr = {"","I ","II ","III ","IV ","V ","VI ","VII ","VIII ","IX "};
    36. return arr[number];
    37. }
    38. public static boolean ccc(String str){
    39. //要求1:长度为小于等于9
    40. if (str.length() > 9){
    41. return false;
    42. }
    43. //要求2:只能是数字
    44. for (int i = 0; i < str.length(); i++) {
    45. char c = str.charAt(i);
    46. if (c < '0' || c > '9'){
    47. return false;
    48. }
    49. }
    50. //只有当字符串里面所有的字符都判断完毕了 才能认为当前字符串符合规则
    51. return true;
    52. }
    53. }

    执行效果:

     

    方法二 

     

     思路:利用switch进行匹配

    1. import java.util.Scanner;
    2. public class test {
    3. public static void main(String[] args) {
    4. String str;
    5. //键盘录入
    6. Scanner sc = new Scanner(System.in);
    7. System.out.println("请输入一个字符串");
    8. str = sc.next();
    9. while (true) {
    10. //校验录入的字符串是否满足要求
    11. boolean flag = ccc(str);
    12. if (flag){
    13. break;
    14. }else {
    15. System.out.println("不符合规则请重新输入!");
    16. continue;
    17. }
    18. }
    19. //将内容变成罗马数字
    20. StringBuilder sbu = new StringBuilder();
    21. for (int i = 0; i < str.length(); i++) {
    22. char c = str.charAt(i);
    23. //调用方法进行转换
    24. String s = change(c);
    25. //字符串拼接
    26. sbu.append(s);
    27. }
    28. //输出
    29. System.out.println(sbu);
    30. }
    31. //对应法的一个方法
    32. public static String change(char number){
    33. String str = switch (number){
    34. case '0' -> str = "";
    35. case '1' -> str = "I ";
    36. case '2' -> str = "II ";
    37. case '3' -> str = "III ";
    38. case '4' -> str = "IV ";
    39. case '5' -> str = "V ";
    40. case '6' -> str = "VI ";
    41. case '7' -> str = "VII ";
    42. case '8' -> str = "VIII ";
    43. case '9' -> str = "IX ";
    44. default -> str = "";
    45. }
    46. return str;
    47. }
    48. public static boolean ccc(String str){
    49. //要求1:长度为小于等于9
    50. if (str.length() > 9){
    51. return false;
    52. }
    53. //要求2:只能是数字
    54. for (int i = 0; i < str.length(); i++) {
    55. char c = str.charAt(i);
    56. if (c < '0' || c > '9'){
    57. return false;
    58. }
    59. }
    60. //只有当字符串里面所有的字符都判断完毕了 才能认为当前字符串符合规则
    61. return true;
    62. }
    63. }

    ”注意“ 其中 String str = switch (number){ } 为JDK12版本的新特性

  • 相关阅读:
    【Java 进阶篇】JavaScript 自动跳转首页案例
    必看,关于sql的慢查询及解决方案
    (6)Flink CEP SQL模拟账号短时间内异地登录风控预警
    亚马逊云购买和配置苹果MacOs系统的云主机
    Linux系统调优详解(一)——系统调优概述与Top命令详解
    2021最新中高级Java面试题目,Java面试题汇总
    优思学院|怎样制定有效的质量管控措施?要善用六西格玛思维!
    pinia 笔记
    echarts条形图实现颜色渐变
    vue3项目应用font awesome6
  • 原文地址:https://blog.csdn.net/dafsq/article/details/126186524