day07【Scanner类、Random类、ArrayList类】
- alt + insert
[外链图片转存失败(img-c42XA7tP-1564289808481)(assets/1563584792414.png)]
一. API
- 代码的说明书
1. 如何使用API
- [外链图片转存失败(img-McwbC1jd-1564289808484)(assets/1563587322178.png)]
- [外链图片转存失败(img-H8L5L4l0-1564289808485)(assets/1563587347345.png)]
- [外链图片转存失败(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) 获取键盘录入的数字, 而输入的不符合要求
不符合要求的场景
- 输入的内容不是数字
- 输入的数字超出了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. 集合存放基本数据类型
- 泛型: 必须是引用数据类型, 集合中只能存放引用数据类型
包装类
- 引用数据类型, 存放基本数据类型的数据(进行类型的转换)
- 每一种基本数据类型都有对应的包装类
基本数据类型 | 对应的包装类 |
---|---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
char | Character |
boolean | Boolean |
集合存放基本类型
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("~~~~~~~~~~");
}
}
}