day07【Scanner类、Random类、ArrayList类】

day07【Scanner类、Random类、ArrayList类】

  • alt + insert

[外链图片转存失败(img-c42XA7tP-1564289808481)(assets/1563584792414.png)]

一. API

  • 代码的说明书

1. 如何使用API

  1. [外链图片转存失败(img-McwbC1jd-1564289808484)(assets/1563587322178.png)]
  2. [外链图片转存失败(img-H8L5L4l0-1564289808485)(assets/1563587347345.png)]
  3. [外链图片转存失败(img-LJmSyfIJ-1564289808485)(assets/1563587379185.png)]

2. API中的包

  • Java中有很多的包, 包中有存放了很多的类
    • lang包中的内容可以直接使用
    • 不是lang包中的所有的类, 在使用前都需要导包

二. Scanner(重点)

1. 获取键盘录入的整数

  • 键盘录入

  • nextInt()

public int nextInt(): 获取键盘录入的一个整数

使用步骤

// 1. 导包
import java.util.Scanner;

public class Demo01 {
    public static void main(String[] args) {
        // 2. 创建对象
        Scanner sc = new Scanner(System.in);
        // 3. 调用方法, 进行键盘录入
        int a = sc.nextInt();
	}
}

2. 获取键盘录入的字符串(String)

  • nextLine()
public String nextLine() : 获取键盘录入的一行, 当做字符串返回

3. 注意事项

(1) 不能先获取数字, 再获取字符串
  • 产生的问题: 没有获取到任何字符串, 程序就结束了
  • 解决方案: 创建两个键盘录入对象, 一个用来获取数字, 另一个用来获取字符串
(2) 获取键盘录入的数字, 而输入的不符合要求

不符合要求的场景

  1. 输入的内容不是数字
  2. 输入的数字超出了int的取值范围

[外链图片转存失败(img-xilpPvLY-1564289808486)(assets/1563589665262.png)]

三. Random(重点)

  • 随机数

1. 使用方式

  • nextInt
public int nextInt(int n) : 获取0(包含)n(不包含)之间的随机数
// 导包
import java.util.Random;

public class Demo01 {
    public static void main(String[] args) {
        // 创建对象
        Random r = new Random();

        // 几次的循环, 几.fori
        for (int i = 0; i < 10; i++) {
            // 调用方法, 获取随机数
            int a = r.nextInt(10) + 1;
            System.out.println(a);
        }
    }
}

四. ArrayList(重点)

  • 容器 — 集合

数组

  • 是一个容器, 可以存放同一种数据类型的多个元素, 长度是固定

集合

  • 是一个容器, 可以存放不同数据类型的多个元素(使用泛型让集合中存放同一种数据类型), 长度是可变的

1. 对象数组

2. ArrayList的创建

(1) 构造方法
public ArrayList() : 空参
(2) 泛型
/*
    类 ArrayList<E> : 
    <E>: 泛型, 用来限定集合中元素的数据类型
    E是什么类型, 集合中就只能存放该类型的元素
*/
ArrayList<String> list = new ArrayList<>();

3. ArrayList的常用功能

  • ArrayList集合有索引

常用功能

  • add
public boolean add(E e): 向集合中添加元素
  • remove
public E remove(int index): 删除指定索引位置的元素
  • get
public E get(int index): 获取指定索引位置的元素
  • size
public int size(): 获取集合的长度, 集合中元素的个数

遍历

ArrayList<String> list = new ArrayList<>();

list.add("张三丰");
list.add("张无忌");
list.add("周芷若");
list.add("赵敏");

for (int i = 0; i < list.size(); i++) {
    System.out.println(list.get(i));
}

4. 集合存放基本数据类型

  • 泛型: 必须是引用数据类型, 集合中只能存放引用数据类型

包装类

  • 引用数据类型, 存放基本数据类型的数据(进行类型的转换)
  • 每一种基本数据类型都有对应的包装类
基本数据类型对应的包装类
byteByte
shortShort
intInteger
longLong
floatFloat
doubleDouble
charCharacter
booleanBoolean

集合存放基本类型


        ArrayList<Integer> list = new ArrayList<>();
        list.add(10);
        list.add(20);
        list.add(30);
        list.add(40);


        System.out.println(list);

五. 练习

1. 练习一: 键盘录入两个数据并求和

public class Test01 {
    public static void main(String[] args) {
        // 键盘录入两个数据并求和
        // 创建键盘录入对象
        Scanner sc = new Scanner(System.in);

        System.out.println("请输入第一个数据:");
        int a = sc.nextInt();
        System.out.println("请输入第二个数据:");
        int b = sc.nextInt();

        // 调用方法并求和
        int sum = getSum(a, b);
        System.out.println(a + " + " + b + " 的和是: " + sum);

    }

    /**
     * 创建方法, 此方法用于求两个数的和
     *
     */
    public static int getSum(int a, int b) {
        return a + b;
    }
}

2. 练习二: 键盘录入三个数据并获取最大值

public class Test02 {
    public static void main(String[] args) {
        // 键盘录入三个数据并获取最大值
        // 创建键盘录入对象
        Scanner sc = new Scanner(System.in);

        System.out.println("请输入第一个数据: ");
        int a = sc.nextInt();
        System.out.println("请输入第二个数据: ");
        int b = sc.nextInt();
        System.out.println("请输入第三个数据: ");
        int c = sc.nextInt();

        int max = getMax(a, b, c);
        System.out.println("最大值为: " + max);
    }

    /**
     * 此方法用于获取3个数的最大值
     */
    public static int getMax(int a, int b, int c) {
        // 先获取2个数的最大值
        int max = a > b ? a : b;
        // 将这个最大值和第三个数比较, 获取其中的最大值
        return max > c ? max : c;
    }
}

3. 练习三: 获取1-n之间的随机数,包含n

public class Test03 {
    public static void main(String[] args) {
        // 获取1-n之间的随机数,包含n

        // 键盘录入数字n
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入随机数的最大值: ");
        int n = sc.nextInt();

        // 调用方法获取随机数
        int random = getRandom(n);
        System.out.println(random);

    }

    /**
     * 此方法用于获取1~n(包含)之间的随机数
     */
    public static int getRandom(int n) {
        // 创建随机数对象
        Random r = new Random();
        // r.nextInt(n) // 0 ~ n-1
        int randomNumber = r.nextInt(n) + 1;
        return randomNumber;
    }
}

4. 练习四: 猜数字小游戏

/*
    游戏开始时,会随机生成一个1-100之间的整数number 。
    玩家猜测一个数字guessNumber ,会与number 作比
    较,系统提示大了或者小了,直到玩家猜中,游戏结束。
 */
public class Test04 {
    public static void main(String[] args) throws IOException {
        // 创建随机数对象
        Random r = new Random();
        // 获取1~100之间的随机数
        int number = r.nextInt(100) + 1;

        // IO流
        /*BufferedWriter bw = new BufferedWriter(new FileWriter("Day07_api\\number.txt"));
        bw.write("数字是: " + number);
        bw.close();*/

        // 创建键盘录入对象
        Scanner sc = new Scanner(System.in);
        // 没猜中就继续猜 -> 思路转变
        // 猜中了就不猜了
        while (true) {
            System.out.println("请输入您猜测的数字: ");
            // 通过键盘录入一个猜测的数字
            int guessNumber = sc.nextInt();

            if (guessNumber > number) {
                System.out.println("大了");
            }else if (guessNumber < number) {
                System.out.println("小了");
            }else {
                // 一定相等
                System.out.println("恭喜您, 猜中了!~");
                // 不猜了, 结束循环
                break;
            }
        }
    }
}

5. 练习五: 生成6个1~33之间的随机整数,添加到集合,并遍历

public class Test05 {
    public static void main(String[] args) {
        // 生成6个1~33之间的随机整数,添加到集合,并遍历

        // 创建集合, 集合用来存放整数
        ArrayList<Integer> list = new ArrayList<>();

        Random r = new Random();

        // 6次的循环
        for (int i = 0; i < 6; i++) {
            int a = r.nextInt(33) + 1;
            // 将随机数存放到集合中
            list.add(a);
        }

        // 遍历
        for (int i = 0; i < list.size(); i++) {
            // 获取指定索引位置的元素
            System.out.println(list.get(i));
        }

    }
}

6. 练习六: 集合存储自定义对象并遍历

public class Test06 {
    public static void main(String[] args) {
        // 自定义4个学生对象,添加到集合,并遍历
        // 创建集合, 存放学生(Student对象)
        ArrayList<Student> list = new ArrayList<>();

        // 创建Student对象 自定义对象
        Student s1 = new Student("赵丽颖", 20);
        Student s2 = new Student("柳岩", 38);
        Student s3 = new Student("贾静雯", 45);
        Student s4 = new Student("贾玲", 35);


        list.add(s1);
        list.add(s2);
        list.add(s3);
        list.add(s4);

        // 集合可以直接打印
        // System.out.println(list); // 打印出来的是每一个元素的地址值

        // 遍历打印
        for (int i = 0; i < list.size(); i++) {
            // i是索引
            // 获取指定索引位置的元素
            Student s = list.get(i); // 按住ctrl, 鼠标悬停在方法上
            System.out.println("姓名: " + s.getName());
            System.out.println("年龄: " + s.getAge());
            System.out.println("~~~~~~~~~~");
        }
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值