• 【java实验】在项目中使用Java常用类


    一、      实验目的

          练习 String 类、System类、Random类、Date 类、Calendar 类、、SimpleDateFormat 类以及正则表达式的使用。

    二、      实验内容

            在Idea中新建名为experiment12的Java项目,在该项目的src下新建experiment2软件包,在该包下创建名为TestAPI的Java类,该类包含一个main方法和5个静态方法,在该类中完成本实验,实验内容如下(分别在5个静态方法中完成(1)-(5)的实验内容,5个静态方法的名字分别为test1、test2、test3、test4和test5,在main方法中执行test1-test5):

            (1) 首先获取系统当前时间,并格式化成 xxxx 年x 月x 日的形式打印出来

            (2) 然后随机获取 a~z 中 4 个字符,并将这 4 个字符拼接成字符串输出,如果拼接的字符串中包含字符 a,则将字符a 替换为@,并将替换后的字符串输出。 

            (3) 最后打印第(1)步和第(2)步执行花费的总时长(可以在第一步执行前获取系统时间,在第(2)步执行后获取系统时间,然后进行相减)。

            (4)使用正则表达式模拟验证手机号的过程,按照以下要求实现相关代码:

    l 提示用户在控制台输入手机号,用一个字符串对其进行保存

    l 判断该手机号位数是否是 11 位 

    l 判断该手机号,是否都是数字

    l 判断改手机号最后 3 为数字如果是相同数字则认为是靓号。

            (5)使用 String 的常用方法和 StringBuffer 类模拟验证手机号的过程,按照以下要求实现相关代码 

    l 提示用户在控制台输入手机号,用一个字符串对其进行保存

    l 判断该手机号位数是否是 11 位 

    l 判断该手机号,是否都是数字 

    l 判断改手机号最后 3 为数字,如果是相同数字则认为是靓号

    三、    程序代码

    1. import java.time.LocalDateTime;
    2. import java.time.format.DateTimeFormatter;
    3. import java.util.Random;
    4. import java.util.Scanner;
    5. public class TestAPI {
    6. public static void main(String[] arg) {
    7. Scanner strin = new Scanner(System.in);
    8. System.out.printf("test1测试结果如下:\n");
    9. long time1 = System.currentTimeMillis();
    10. test1();
    11. System.out.printf("\n");
    12. System.out.printf("test2测试结果如下:\n");
    13. test2();
    14. System.out.printf("\n");
    15. long time2 = System.currentTimeMillis();
    16. System.out.printf("运行test1和test2系统花费时间为:" + (time2 - time1));
    17. System.out.printf("\n");
    18. System.out.printf("请输入用户的手机号码:\n");
    19. String str = strin.next();
    20. System.out.printf("test3的测试结果如下:\n");
    21. test3(str);
    22. System.out.printf("test4的测试结果如下:\n");
    23. test4(str);
    24. }
    25. public static void test1() {
    26. // 打印出当前的系统时间
    27. LocalDateTime Idt = LocalDateTime.now();
    28. DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH时mm分ss秒");
    29. System.out.print(Idt.format(dtf));
    30. }
    31. public static void test2() {
    32. // 随机选取四个字母组成字符串,如果选取的字符为a,则替换为@
    33. int length = 4;
    34. String str = "abcdefghijklmnopqrstuvwxyz";
    35. Random random = new Random();
    36. StringBuffer newstr = new StringBuffer();
    37. for (int i = 0; i < length; i++) {
    38. int number = random.nextInt(26);
    39. if (number == 'a') {
    40. number = '@';
    41. }
    42. newstr.append(str.charAt(number));
    43. }
    44. System.out.printf(String.valueOf(newstr));
    45. }
    46. public static void test3(String tel) {
    47. String a,b,c;
    48. String regex = "1[345678][0-9]{9}";
    49. if (tel.matches(regex)) {
    50. System.out.printf("电话号码格式正确,电话号码位数为11位,并且都是数字\n");
    51. } else {
    52. System.out.printf("电话号码格式不正确\n");
    53. }
    54. // 为了偷懒,我直接用切片做的靓号比较
    55. a = tel.substring(8);
    56. b = tel.substring(9);
    57. c = tel.substring(10);
    58. if((a==b)&&(b==c)){
    59. System.out.printf("改手机号码为靓号\n");
    60. }
    61. else{
    62. System.out.printf("改手机号码不是靓号\n");
    63. }
    64. }
    65. public static void test4(String tel){
    66. char a,b,c;
    67. int length = tel.length();
    68. if(length == 11){
    69. System.out.printf("改电话号码长度正确为11位\n");
    70. }
    71. for(int i =0;i
    72. if(!Character.isDigit(tel.charAt(i))){
    73. System.out.printf("该电话号码不全为数字\n");
    74. }
    75. }
    76. System.out.printf("该电话号码全为数字\n");
    77. a = tel.charAt(8);
    78. b = tel.charAt(9);
    79. c = tel.charAt(10);
    80. if((a==b)&&(b==c)){
    81. System.out.printf("该电话号码为靓号\n");
    82. }
    83. else{
    84. System.out.printf("该电话号码不为靓号\n");
    85. }
    86. }
    87. }

            四、实验总结

            本实验比较有特色的部分在于判断手机号是否为靓号,在实验中可以使用三种不同的方式判断一个手机号是否为靓号:

            1)给出多个符合靓号格式的正则表达式,判断手机号码是否符合(或者将多个符合靓号表达式的正则表达式进行合并);

            2)使用substringj进行字符串切片进行比较;

            3)使用charAtj进行字符串切片比较;

  • 相关阅读:
    Gitee仓库介绍和项目纳入版本管理+ignore文件配置
    设计模式之工厂方法模式--更加符合开闭原则的工厂模式
    ConcurrentHashMap源码解析 3.put() 方法
    《吐血整理》进阶系列教程-拿捏Fiddler抓包教程(15)-Fiddler弱网测试,知否知否,应是必知必会
    电路的基本原理
    前端开发ui设计稿在网页上的实现
    JDK8新特性--函数式接口--(Consumer的概念理解,模拟练习,企业实战)全流程彻底搞懂
    没用的知识增加了,尝试用文心实现褒义词贬义词快速分类
    Swift 周报 第三十八期
    2×500kVA(RCS9000)某10kV配电室设计(任务书+说明书+cad图纸)
  • 原文地址:https://blog.csdn.net/weixin_54354252/article/details/127763641