• 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版本的新特性

  • 相关阅读:
    systemctl enable docker.service报错“Failed to execute operation: Bad message“
    【业务功能114】微服务-springcloud-springboot-Kubernetes集群-k8s集群-KubeSphere发布应用WordPress
    富格林:谨防欺诈陷阱安全计策应对
    【LeetCode刷题(数据结构)】:给定一个链表 每个节点包含一个额外增加的随机指针 该指针可以指向链表中的任何节点或空节点 要求返回这个链表的深度拷贝
    手机弱网测试工具:Charles
    Polygon zkEVM Memory Align状态机
    104. SAP UI5 表格控件的支持复选(Multi-Select)以及如何用代码一次选中多个表格行项目
    c#中容易被忽视的foreach
    JavaWeb_LeadNews_Day12-jenkins
    CogVLM & CogAgent模型部署
  • 原文地址:https://blog.csdn.net/dafsq/article/details/126186524