【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 为数字,如果是相同数字则认为是靓号

三、    程序代码

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Random;
import java.util.Scanner;

public class TestAPI {
    public static void main(String[] arg) {
        Scanner strin = new Scanner(System.in);
        System.out.printf("test1测试结果如下:\n");
        long time1 = System.currentTimeMillis();
        test1();
        System.out.printf("\n");
        System.out.printf("test2测试结果如下:\n");
        test2();
        System.out.printf("\n");
        long time2 = System.currentTimeMillis();
        System.out.printf("运行test1和test2系统花费时间为:" + (time2 - time1));
        System.out.printf("\n");
        System.out.printf("请输入用户的手机号码:\n");
        String str = strin.next();
        System.out.printf("test3的测试结果如下:\n");
        test3(str);
        System.out.printf("test4的测试结果如下:\n");
        test4(str);
    }

    public static void test1() {
        // 打印出当前的系统时间
        LocalDateTime Idt = LocalDateTime.now();
        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH时mm分ss秒");
        System.out.print(Idt.format(dtf));
    }

    public static void test2() {
        // 随机选取四个字母组成字符串,如果选取的字符为a,则替换为@
        int length = 4;
        String str = "abcdefghijklmnopqrstuvwxyz";
        Random random = new Random();
        StringBuffer newstr = new StringBuffer();
        for (int i = 0; i < length; i++) {
            int number = random.nextInt(26);
            if (number == 'a') {
                number = '@';
            }
            newstr.append(str.charAt(number));
        }
        System.out.printf(String.valueOf(newstr));
    }

    public static void test3(String tel) {
        String a,b,c;
        String regex = "1[345678][0-9]{9}";
        if (tel.matches(regex)) {
            System.out.printf("电话号码格式正确,电话号码位数为11位,并且都是数字\n");
        } else {
            System.out.printf("电话号码格式不正确\n");
        }
        // 为了偷懒,我直接用切片做的靓号比较
        a = tel.substring(8);
        b = tel.substring(9);
        c = tel.substring(10);
        if((a==b)&&(b==c)){
            System.out.printf("改手机号码为靓号\n");
        }
        else{
            System.out.printf("改手机号码不是靓号\n");
        }
    }

    public static void test4(String tel){
        char a,b,c;
        int length = tel.length();
        if(length == 11){
            System.out.printf("改电话号码长度正确为11位\n");
        }
        for(int i =0;i<tel.length();i++){
            if(!Character.isDigit(tel.charAt(i))){
                System.out.printf("该电话号码不全为数字\n");
            }
        }
        System.out.printf("该电话号码全为数字\n");
        a = tel.charAt(8);
        b = tel.charAt(9);
        c = tel.charAt(10);
        if((a==b)&&(b==c)){
            System.out.printf("该电话号码为靓号\n");
        }
        else{
            System.out.printf("该电话号码不为靓号\n");
        }
    }
}

        四、实验总结

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

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值