JavaAPI综合案例(一)

126 阅读6分钟

案例一

需求一:键盘录入1-100之间的整数,并添加到集合中。 直到集合中所有数据和超过200为止

第一步:创建一个集合

// 1.创建一个集合用来添加数据
ArrayList<Integer> list = new ArrayList<>();

第二步:键盘录入

// 2.键盘录入
Scanner sc = new Scanner(System.in);

第三步:循环放进集合中

while (true){
    System.out.println("请输入一个整数:");
    String numStr = sc.nextLine();
    int num = Integer.parseInt(numStr);
}

第四步:对异常数据进行筛选

// 先把异常的数据进行过滤
if(num <1 || num > 100){
    System.out.println("当前数字不在1-100之间,请重新输入!");
    continue;
}

第五步:把符合的数字添加到集合中

// 添加到集合中
// num:基本数据类型,而集合里面的是Integer类型。
// 在添加数据的时候触发了自动装箱
list.add(num);

第六步:定义一个方法统计所有数据的和

int sum = getSum(list);

private static int getSum(ArrayList<Integer> list) {
    int sum = 0;
    for (int i = 0; i < list.size(); i++) {
        int num = list.get(i);
        sum += num;
    }
    return sum;
}

第七步:判断是否已经满足200了

// 对sum进行判断
if(sum > 200){
    System.out.println("集合中的所有数据和已经满足要求了");
    break;
}

我们来运行看一下把:

image.png

完整代码:

// 1.创建一个集合用来添加数据
    ArrayList<Integer> list = new ArrayList<>();
    // 2.键盘录入添加到集合中
    Scanner sc = new Scanner(System.in);
    while (true){
        System.out.println("请输入一个整数:");
        String numStr = sc.nextLine();
        int num = Integer.parseInt(numStr);
        // 先把异常的数据进行过滤
        if(num <1 || num > 100){
            System.out.println("当前数字不在1-100之间,请重新输入!");
            continue;
        }
        // 添加到集合中
        // num:基本数据类型,而集合里面的是Integer类型。
        // 在添加数据的时候触发了自动装箱
        list.add(num);

        // 统计集合中所有的数据和
        int sum = getSum(list);
        // 对sum进行判断
        if(sum > 200){
            System.out.println("集合中的所有数据和已经满足要求了");
            break;
        }
    }

private static int getSum(ArrayList<Integer> list) {
    int sum = 0;
    for (int i = 0; i < list.size(); i++) {
        int num = list.get(i);
        sum += num;
    }
    return sum;
}

案例二

需求:自己实现parselnt方法的效果,将字符串形式的数据转成整数。要求:字符串中只能是数字不能有其他字符。最少一位,最多10位。0不能开头

第一步:定义一个字符串

// 1.定义一个字符串
String str = "123456789";

第二步:对字符串进行校验

// 2.校验字符串
if(!str.matches("[1-9]\d{0,9}")){
    // 错误的数据
    System.out.println("数据格式有误!");
}else{
    // 正确的数据
    System.out.println("数据格式正确!");
}

第三步:定义一个变量并遍历每个字符转为整数

// 3.类型转换
int number = 0;
// 4.遍历字符串,得到每一个字符
for (int i = 0; i < str.length(); i++) {
    // 得到每一个字符转换为整数
    int c = str.charAt(i) - '0';
    // 把每一位数字放到number中
    number = number * 10 + c;
}
System.out.println(number);

我们来运行看一下吧:

image.png

完整代码:

// 1.定义一个字符串
String str = "123456789";
// 2.校验字符串
if(!str.matches("[1-9]\d{0,9}")){
    // 错误的数据
    System.out.println("数据格式有误!");
}else{
    // 正确的数据
    System.out.println("数据格式正确!");

    // 3.类型转换
    int number = 0;
    // 4.遍历字符串,得到每一个字符
    for (int i = 0; i < str.length(); i++) {
        // 得到每一个字符转换为整数
        int c = str.charAt(i) - '0';
        // 把每一位数字放到number中
        number = number * 10 + c;
    }
    System.out.println(number);
}

案例三

需求:请用代码实现你生活了多少天,请用JDK7和JDK8完成

  • JDK7

第一步:定义你的出生年月日

String birthbay = "2000年1月1日";

第二步:计算出生年月日的毫秒值

SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");
Date date = sdf.parse(birthbay);
long birthbayTime = date.getTime();

第三步:获取当前的时间毫秒值

// 2.获取当前时间的毫秒值
long todayTime = System.currentTimeMillis();

第四步:计算出间隔时间

// 3.计算间隔的天数
long time = todayTime- birthbayTime;
System.out.println(time / 1000 / 60 / 60 / 24);
  • JDK8

第一步:定义你的出生年月日

LocalDate ld1 = LocalDate.of(2000, 1,1);

第二步:获取当前的时间毫秒值

LocalDate ld2 = LocalDate.now();

第三步:计算出间隔时间

long days = ChronoUnit.DAYS.between(ld1,ld2);
System.out.println(days);

我们来运行看一下吧:

image.png

完整代码:

// JDK7
// 1计算出生年月日的毫秒值
String birthbay = "2000年1月1日";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");
Date date = sdf.parse(birthbay);
long birthbayTime = date.getTime();
// 2.获取当前时间的毫秒值
long todayTime = System.currentTimeMillis();
// 3.计算间隔的天数
long time = todayTime- birthbayTime;
System.out.println(time / 1000 / 60 / 60 / 24);

// JDK8
LocalDate ld1 = LocalDate.of(2000, 1,1);
LocalDate ld2 = LocalDate.now();
long days = ChronoUnit.DAYS.between(ld1,ld2);
System.out.println(days);

案例四

需求:判断任意的一个年份是闺年还是平年。要求:用IDK7和IDK8两种方式判断 提示:2月有29天是闰年

  • JDK7

第一步:定义一个年月日

//假设把时间设置为2000年3月1日
Calendar c = Calendar.getInstance();
c.set(2000,2,1);

第二步:把日历往前减一天

//再把日历往前减一天
c.add(Calendar.DAY_OF_MONTH,-1);

第三步:看当前的时间是28号还是29号?

//看当前的时间是28号还是29号?
int day1 = c.get(Calendar.DAY_OF_MONTH);
System.out.println(day1);
  • JDK8

第一步:定义一个年月日

//假设把时间设置为2000年3月1日
LocalDate ld3 = LocalDate.of(2000,3,1);

第二步:把日历往前减一天

//再把日历往前减一天
LocalDate ld4 = ld3.minusDays(1);

第三步:获取这一天是一个月中的几号

//获取这一天是一个月中的几号
int day2 = ld4.getDayOfMonth();
System.out.println(day2);

我们来运行看一下:

image.png

是不是都有29号呀,29天那就证明是闰年。

完整代码:

// JDK7
// 月份的范围:0-11
//假设把时间设置为2000年3月1日
Calendar c = Calendar.getInstance();
c.set(2000,2,1);
//再把日历往前减一天
c.add(Calendar.DAY_OF_MONTH,-1);
//看当前的时间是28号还是29号?
int day1 = c.get(Calendar.DAY_OF_MONTH);
System.out.println(day1);

// JDK8
// 月份的范围:1-12
//假设把时间设置为2000年3月1日
LocalDate ld3 = LocalDate.of(2000,3,1);
//再把日历往前减一天
LocalDate ld4 = ld3.minusDays(1);
//获取这一天是一个月中的几号
int day2 = ld4.getDayOfMonth();
System.out.println(day2);

其实呀,JDK8还有一个方法可以直接快速的判断是不是闰年的方法:isLeapYear()我们来看一下:

//true:闻年   false: 平年
System.out.println(ld3.isLeapYear());

image.png

是不是直接返回一个true啦,这就是JDK8的优势。

好啦,关于一些API的案例就做到这里,有什么不懂的可以在评论区互相探讨哟,我们下期不见不散!!!

==最后非常感谢您的阅读,也希望能得到您的反馈  ==