实验四 Java API(实验报告)
一、实验目的
在集成开发环境下,通过阅读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
问题四
- 编写一个程序,实现字符串大小写的转换并倒序输出。具体要求:
- 使用for循环将字符串“ITcastHeiMa”从最后一个字符开始遍历;
- 遍历的当前字符如果是大写字符,就使用toLowerCase()方法将其转换为小写字符,反之则使用toUpperCase()方法将其转换为大写字符;
- 定义一个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, 使用的时候查文档即可