java实验四正式报告

实验四 Java API(实验报告)

姓名: XXX          班级: XXX          学号: XXX

一、实验目的

  在集成开发环境下,通过阅读Java API文档来使用合适的常用类及方法解决实际问题。

二、实验目标

  1.能够通过阅读Java API文档来灵活运用Java API中的一些常用类(例如String、StringBuffer、System、Runtime、Math、Random等)来解决实际问题。
  2.能够灵活运用用Java语言的常用集合类(ArrayList、Map、Collections、Array等)来解决实际问题。

三、实验内容

3.1 实验环境

IntelliJ IDEA Ultimate Edition 2021.3 x64. + openjdk-17.0.1.

3.2 具体实验内容
问题一
  • 定义一个方法,根据用户身份证号码计算其年龄并输出。

问题分析:用户的身份证号, 第6位到第13位是出生年月日, 根据这个计算当前的年龄, 用户身份证号假设用String类型, 可以使用substring方法截取出生日期

身份证: 123456 2000 1006 7890

import java.util.Scanner;

public class QuestionOne {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String id = scanner.next();
        System.out.println(calculateAge(id));
    }

    //123456 2000 1006 7890
    public static int calculateAge (String id) {
        String yearString = id.substring(6, 10);
        String monthString = id.substring(10,14);
        int year = 2021 - Integer.parseInt(yearString);
        int month = Integer.parseInt(monthString.substring(0,2));
        if (month > 11)
            year++;
        return year;
    }

}
  • 实验结果

123456200010067890
21

问题二
  • 采用Random类或者Math类随机生成一组随机数,存入List集合类(ArrayList、LinkedList等都可以),并利用Iterator接口便利集合。

问题分析:使用Random类产生随机数

package experiment4;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.Random;

public class QuestionTwo {
    public static void main(String[] args) {
//        for (Integer integer : generateRandomNumber())
//            System.out.println(integer);
        Iterator<Integer> integers = generateRandomNumber().iterator();
        while (integers.hasNext())
            System.out.println(integers.next());
    }

    public static ArrayList<Integer> generateRandomNumber () {
        Random random = new Random();
        ArrayList<Integer> arrayList = new ArrayList<>();
        for (int i = 0; i < 10; i++)
            arrayList.add(random.nextInt(1000));
        return arrayList;
    }
}
  • 实验结果

397
308
902
385
328
231
431
611
35
790

问题三
  • 获取当前的系统日期和时间来产生订单的单号,单号的构成:D+年份+月份+日期+时钟+分钟+秒+系统用户账号,要用到日期类Date(通过使用API文档来掌握该类的用法)。

问题分析:使用java.time.LocalDate类获取年月日, 使用java.time.LocalDateTime类获得当前系统时间, 创建订单类

import java.time.LocalDate;
import java.time.LocalDateTime;

public class QuestionThree {
    public static void main(String[] args) {
        Order order = new Order();
        System.out.println(order.getOrder());
    }
}


class Order {
    private int year;
    private int month;
    private String time;
    private final String account = "ADMIN";
    private String order;
    public Order () {
        this.year = LocalDate.now().getYear();
        this.month = LocalDate.now().getMonth().getValue();
        this.time = LocalDateTime.now().toString().substring(11, 19);
        this.order = this.year + "" + this.month + time + account;
    }
    public String getOrder () {
        return this.order;
    }
}
  • 实验结果

20211100:49:41ADMIN

问题四
  • 编写一个程序,实现字符串大小写的转换并倒序输出。具体要求:
  1. 使用for循环将字符串“ITcastHeiMa”从最后一个字符开始遍历;
  2. 遍历的当前字符如果是大写字符,就使用toLowerCase()方法将其转换为小写字符,反之则使用toUpperCase()方法将其转换为大写字符;
  3. 定义一个StringBuffer对象,调用append()方法依次添加遍历的字符,最后调用StringBuffer对象的toString( )方法,并将得到的结果输出。

问题分析:倒序从最后一个开始, 使用循环, 倒着依次进行判断, 小写转大写插入, 大写转小写插入

import java.util.Locale;

public class QuestionFour {
    public static void main(String[] args) {
        String origin = "ITcastHeiMa";
        StringBuffer stringBuffer = new StringBuffer("");
        for (int i = origin.length() - 1, j = 0; i >= 0; i--, j++) {
            char c = origin.charAt(i);
            if (c <= 'z' && c >= 'a') {
                stringBuffer.append((c + "").toUpperCase(Locale.ROOT));
            }
            if (c <= 'Z' && c >= 'A') {
                stringBuffer.append((c + "").toLowerCase(Locale.ROOT));
            }
        }
        System.out.println(stringBuffer.toString());
    }
}
  • 实验结果

AmIEhTSACti

四、实验总结

  学习使用了Java API, 本身对这类方法都不太熟悉, 每次使用的时候都要查看文档, 这次试验基本都使用了各种常用类的API, 课后应该多使用和巩固, 对于不常用的API, 使用的时候查文档即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值