实验四 javaAPI

实验四 javaAPI,第1张

实验四 javaAPI
面向对象——Java实验报告
实验四: Java API
实验四 Java API
姓名: XXX    班级: XXXXX    学号: XXXXXXXXXXXX
一、实验目的

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

二、 实验目标:

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

(2)能够灵活运用用Java语言的常用集合类(ArrayList、Map、Collections、Array等)来解决实际问题。

三、实验内容:

    定义一个方法,根据用户身份z号码计算其年龄并输出。

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

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

    编写一个程序,实现字符串大小写的转换并倒序输出。具体要求:

    ​ (1)使用for循环将字符串“ITcastHeiMa”从最后一个字符开始遍历。

    ​ (2)遍历的当前字符如果是大写字符,就使用toLowerCase()方法将其转换为小写字符,反之则使用在toUpperCase()方法将其转换为大写字符。

    ​ (3)定义一个StringBuffer对象,调用append()方法依次添加遍历的字符,最后调用StringBuffer对象的toString( )方法,并将得到的结果输出。

四、实验过程分析 4.1 实验步骤

定义一个方法,根据用户身份z号码计算其年龄并输出。

实验代码:

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;

class parse{
    public parse(String identifys){
        date[0]= Integer.parseInt(identifys.substring(6,10));
        date[1]=Integer.parseInt(identifys.substring(10,12));
        date[2]=Integer.parseInt(identifys.substring(12,14));
        get_now_date();}
    private void get_now_date(){
        Date date=new Date();
        SimpleDateFormat dateFormat= new SimpleDateFormat("yyyy-MM-dd");
        String Date=dateFormat.format(date);
        System.out.println("当前日期为:"+Date);
        now[0]= Integer.parseInt(Date.substring(0,4));
        now[1]=Integer.parseInt(Date.substring(5,7));
        now[2]=Integer.parseInt(Date.substring(8,10));}
    private boolean check(){ return now[0]>=date[0]&& date[0]>1900 &&(date[1]>0&&date[1]<13);}
    public int Figure(){
        if (check()){
            int age= now[0]-date[0]-1;
            if(now[1]date[2]){age++;}}
            if(now[1]>date[1]){age++;}
            return age;}
        return -1;}
private int date[]=new int[3];
private  int now[]=new int[3];}

public class identify {
    public static void main(String[] args) {
        Scanner cin=new Scanner(System.in);
        String identifys=cin.nextLine();
        if (identifys.length()!=18){
            System.out.println("身份z号输入错误!");
            return;}
        parse Person=new parse(identifys);
        if (Person.Figure()>0){
            System.out.println("年龄为:"+Person.Figure());
            return;}
        else {
            System.out.println("身份z号输入错误!");
            return;}}}

输出结果:

610424200110101304
当前日期为:2021-12-03
年龄为:20

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

实验代码:

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

public class Randtest {
    public static void main(String[] args) {
        Iterator integers = generateRandomNumber().iterator();
        while (integers.hasNext())
            System.out.println(integers.next());}
    public static ArrayList generateRandomNumber () {
        Random random = new Random();
        ArrayList arrayList = new ArrayList<>();
        for (int i = 0; i < 10; i++)
            arrayList.add(random.nextInt(1000));
        return arrayList;}}

输出结果:

237
941
720
976
631
308
148
97
727
289

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

实验代码:

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

public class OrderofGoods {
    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;}}

输出结果:

20211216:07:11ADMIN

编写一个程序,实现字符串大小写的转换并倒序输出。具体要求:

​ (1)使用for循环将字符串“ITcastHeiMa”从最后一个字符开始遍历。

​ (2)遍历的当前字符如果是大写字符,就使用toLowerCase()方法将其转换为小写字符,反之则使用在toUpperCase()方法将其转换为大写字符。

​ (3)定义一个StringBuffer对象,调用append()方法依次添加遍历的字符,最后调用StringBuffer对象的toString( )方法,并将得到的结果输出。

实验代码:

import java.util.Locale;

public class reverse {
    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
4.2 错误分析

问题复现

在输入身份z号之后返回的年龄为-1,

问题分析

问题产生源于未通过check函数的检查,最终发现now时间未被初始化get_now_date初始化函数未被调用。

解决方案

在初始化date的同时调用get_now_date初始化函数初始化now.问题解决!

五、个人总结

  在本次实验中通过阅读Java API文档学习Java API中的一些常用类(例如String、StringBuffer、System、Runtime、Math、Random等)来解决实际问题。并尝试使用Java语言的常用集合类(ArrayList、Map、Collections、Array等)来解决实际问题。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5708188.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存