实验四: Java API

一、实验目的:

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

二、实验目标

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

三、实验内容

3.1 实验环境

java version "13.0.2" 2020-01-14

Java(TM) SE Runtime Environment (build 13.0.2+8)

Java HotSpot(TM) 64-Bit Server VM (build 13.0.2+8, mixed mode, sharing)

3.2 具体实验内容

  1. 定义一个方法,根据用户身份证号码计算其年龄并输出。
  2. 采用Random类或者Math类随机生成一组随机数,存入List集合类(ArrayList、LinkedList等都可以),并利用Iterator接口便利集合。
  3. 分别统计字符串中出现的大写字母、小写字母个数,以及

出现的数字字符以及其他字符的个数。

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

四、实验过程分析

4.1 实验步骤

1.身份证,直接在main方法中进行输入和输出,再利用字符串的分割、组合等方法进行判断,再输出结果。

代码如下:

package demo;

import java.util.Calendar;

import java.util.Scanner;



public class Main {

    public static Integer oldYear;

    public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);

        System.out.print("输入你的身份证号: ");

        StringBuilder id = new StringBuilder(scanner.next());

        Calendar calendar = Calendar.getInstance();

        int year = Integer.parseInt(id.substring(6, 10));

        int month = Integer.parseInt(id.substring(10, 12));

        int day = Integer.parseInt(id.substring(12, 14));

        oldYear = calendar.get(Calendar.YEAR) - year;

        if (calendar.get(Calendar.MONTH) < month) {

            oldYear--;

        } else if (calendar.get(Calendar.YEAR) == month) {

            if (calendar.get(Calendar.DAY_OF_WEEK) < day) {

                oldYear--;

            }

        }

        System.out.println("你现在的年龄是" + oldYear);

    }

}

  1. Random类或者Math类,创建一个Random类对象,利用这个对象的方法进行随机输入。

   代码如下:

    

 package demo;

import java.util.ArrayList;

import java.util.Iterator;

import java.util.List;

import java.util.Random;



public class Main {

    public static void main(String[] args) {

        Random random = new Random();

        List<Integer> list = new ArrayList<>();

        for (int i = 0; i < 20; i++) {

            list.add(random.nextInt(100));

        }

        Iterator<Integer> iterator = list.iterator();

        while (iterator.hasNext()) {

            System.out.print(iterator.next() + " ");

        }

    }

}

  1. 统计字符串,在main中输入一个字符串,在利用遍历的方法进行一个一个字符的判断,再输出结果。

  代码如下:

package demo;

import java.util.Scanner;



public class Main {

    public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);

        String s = scanner.nextLine();

        int upChar = 0, lowChar = 0, digit = 0, other = 0;

        for (int i = 0; i < s.length(); i++) {

            char c = s.charAt(i);

            if (Character.isUpperCase(c)) {

                upChar++;

            } else if (Character.isLowerCase(c)) {

                lowChar++;

            } else if (Character.isDigit(c)) {

                digit++;

            } else {

                other++;

            }

        }

        System.out.println("upChar = " + upChar);

        System.out.println("lowChar = " + lowChar);

        System.out.println("digit = " + digit);

        System.out.println("other = " + other);

    }

}

  1. 实现字符串大小写,在main方法中,输出一串字符串,利用遍历方法,再利用Character方法进行将大小写判断。

   代码如下:

package demo;

import java.util.Scanner;



public class Main {

    public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);

        String s = scanner.next();

        StringBuffer reverse = new StringBuffer();

        for (int i = s.length() - 1; i >= 0; i--) {

            char c = s.charAt(i);

            if (Character.isLowerCase(c)) {

                reverse.append(Character.toUpperCase(c));

            } else {

                reverse.append(Character.toLowerCase(c));

            }

        }

        System.out.println(reverse.toString());

    }

}

4.2 错误分析

1.身份证一定要输入正确,否则就会出现问题,如年纪过大和不符合等。

2.在利用迭代器进行遍历时,要考虑迭代器是用在什么类型上,不同的类型迭代器也不一样。

3.本实验在考虑字符串统计时,输入的数据一定要符合,否则就会报错,如你输入了数字和空格等其他字符。

4.本实验无需单独再定义反转方法,因为在Character中有现成的方法可以利用。

五、实验总结

答:1、文档注释可以修饰在类上用于说明类的功能,给使用者第一个直观印象

2、字符串是不变对象,字符串对象一旦创建内容不可以改变。

若内容改变,一定会创建新对象

java 的编译器做了一个优化,若一个计算表达式运算符的两边都是字面量。

那么编译的时候就会将其运算,将结果生成到 .class 文件中。

所以下面的这句话,在 .class 文件中变为了 :

String s4 = "123"+"abc"; //String s4 = "123abc";

3、int lenght() 获取字符串的长度 str.lenght ()

该方法可以获取一个字符串所占用的字符数量

无论中英文,每个字符一个长度

4、int indexOf(String str) 查看字符串的位置

查看给定的字符串在当前字符串的位置 ,位置就是下标,从 0 开始

若返回值为 -1 说明当前字符串中不包含给定的内容。

从给定的下标对应的位置处开始找第一次出现字符串的位置

index= str.indexOf("in", 4);

5、String subString(start, end) 截取字符串

java 的 api 中有一个共性

凡是使用两个数字表示一个范围的时候,

总是含头不含尾的

6、String trim()

用于去除字符串两边的 "空白 "

空白指的是占位但看不到的字符

7、char charAt()

给定位置获取当前字符串中对应的字符

功能与 indexOf 反着

8、String startsWith()/endsWith()

判断一个字符串是否以给定的字符串开头或结尾

9、String toUpperCase()/toLowerCase()

英语大小写转换

10、 String String.valueOf(//i)

将基本类型数据转换为字符串。字符数组也可以

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一个学编程的

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值