java基础——day06-1 Scanner类、Random类、ArrayList类
Scanner类
什么是scanner类:
一个可以解析基本类型和字符串的简单文本扫描器。
例如:读取用户输入的数
package day06; import java.util.Scanner; public class day06_1 { public static void main(String[] args) { //创建一个Scanner类的对象 Scanner sc = new Scanner(System.in); //提示用户输入 System.out.print("请输入int型的数值:"); //定义一个变量接收用户输入的数 int i = sc.nextInt(); System.out.println("用户输入:"+i); } }
引用类型使用步骤
使用import关键字导包,在类的所有代码之前导包,引入要使用的类型。java.lang包下的所有类无需导入。
格式:import 包名.类名;
例如:java.util.Scanner;
创建对象
使用该类的构造方法,创建一个该类的对象
格式:数据类型 变量名 = new 数据类型(参数列表);
举例:
Scanner sc = new Scanner(System.in);
调用方法
调用该类的成员方法,完成指定功能。
格式:变量名.方法名;
举例:
int i = sc.nextInt();
Scanner使用步骤
查看类
java.util.Scanner:该类需要导包使用
查看构造方法
public Scanner(Inputstream source) :构造一个新的Scanner,它生成的值是从指定的输入流扫描的
查看成员方法
public int nextInt();:将输入信息的下一个标记扫描为int值,
//导包
import java.util.Scanner;
public class day06_1 { public static void main(String[] args) { //创建一个Scanner类的对象 Scanner sc = new Scanner(System.in); //提示用户输入 System.out.print("请输入int型的数值:"); //定义一个变量接收用户输入的数 int i = sc.nextInt(); System.out.println("用户输入:"+i); } }
练习
1.键盘输入两个int数据并求和
package day06; //导包 import java.util.Scanner; public class day06_2 { public static void main(String[] args) { //定义两个int数据 用于接收用户输入的数值 int a,b; //创建一个Scanner对象 Scanner sc = new Scanner(System.in); //引导输入 System.out.print("请输入第一个数值:"); //变量a接收第一个数值 a = sc.nextInt(); //引导输入2 System.out.print("请输入第二个数值:"); //变量b接收第二个数值 b =sc.nextInt(); //定义个变量 用于接收a+b的和 int sum = a+b; System.out.println("和为:"+sum); } }
2.键盘输入三个数据并取最大值
package day06; import java.util.Scanner; public class day06_3 { public static void main(String[] args) { int a,b,c; Scanner sc =new Scanner(System.in); System.out.print("请输入第一个整型数值:"); a =sc.nextInt(); System.out.print("请输入第二个整型数值:"); b = sc.nextInt(); System.out.print("请输入第三个整型数值:"); c = sc.nextInt(); //利用三元运算符 判断最大值 int temp = (a>b?a:b); int max = (temp>c?temp:c); System.out.print("max:"+max); } }
Random
什么是Random
一个能够产生随机数的类
例如
package day06; //导包 import java.util.Random; public class day06_4 { public static void main(String[] args) { //创建一个Random对象 Random r = new Random(); //定义一个变量 接收产生的随机数 int i = r.nextInt(); //打印输出 System.out.println(i); } }
Random的使用步骤
查看类
java.util.Random:该类需要导包使用
查看构造方法
public Random:创建一个新的随机数生成器
查看成员方法
public int nextInt(int n):返回随机数,范围在(0 - n)之间,不包括n。
例如
package day06; //导包 import java.util.Random; public class day06_5 { public static void main(String[] args) { //创建一个新的随机数生成器 Random r = new Random(); //定义一个 变量i 用于接收产生的随机数 其范围为(0 -5)之间 int i = r.nextInt(5); //打印输出i的值 System.out.println(i); } }
练习
1.获取1-n之间的随机数包含n
package day06; import java.util.Random; public class day06_6 { public static void main(String[] args) { Random r = new Random(); int i = r.nextInt(5)+1; System.out.println(i); } }
2.猜数字:游戏开始时,会随机生成一个1-100之间的整数 number 。玩家猜测一个数字 guessNumber ,会与 number 作比较,系统提示大了或者小了,直到玩家猜中,游戏结束
package day06; import java.util.Random; import java.util.Scanner; public class day06_7 { //猜数字 public static void main(String[] args) { Random r = new Random(); Scanner sc = new Scanner(System.in); int number = r.nextInt(100); System.out.print("请输入您猜的数字:"); int guessNumber = sc.nextInt(); if(guessNumber > number){ System.out.println("您猜的数字大了"); }else if(guessNumber < number){ System.out.println("您猜的数字小了"); }else { System.out.println("恭喜您答对了!"); } } }
3.优化练习2,让用户猜到为止
package day06; import java.util.Random; import java.util.Scanner; public class day06_8 { //猜数字 猜到正确答案位置 public static void main(String[] args) { //创建一个新的随机数生成器 Random r = new Random(); //生成一个Scanner对象 Scanner sc = new Scanner(System.in); //定义 result 接收Random生成的,范围为(0-100)的随机数 int result = r.nextInt(100); //定义 guess 用于接收用户输入的数值 System.out.println(result); int guess; //用do{}while()循环 先执行一遍循环体的内容 再进行循环 do { System.out.print("请输入您猜测的结果:"); guess = sc.nextInt(); if (guess > result) { System.out.println("对不起,您猜的数字大了"); } else if (guess < result) { System.out.println("对比起,猜小了猜小了!"); } else { System.out.println("恭喜您,答对了"); } }while (guess != result); //当用户输入 不等于 随机数时 进行循环 } }
ArrayList类
使用学生数组,存储三个学生对象
package day06; public class Student { //定义成员变量 成员属性 private String name; private int age; //定义构造方法 public Student() { } public Student(String name) { this.name = name; } public Student(String name, int age) { this.name = name; this.age = age; } //定义get and set方法 public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
通过代码可以发现,如果学生一旦超过数组的长度,就会出现"越界"异常,因为数组长度是固定的,无法适应数据变化的需求。为了解决这一问题,Java提供了另外一个容器java.util.ArrayList(集合类),让我们能够更加便捷的存储和操作对象数据。
什么是ArrayList类
java.util.ArrayList<E>是大小可变的数组的实现,存储在其中的数据称为元素。此类提供一些方法来操作内部存储的元素。ArrayList中可不断添加元素,其大小也会自动增长。
ArrarList使用步骤
查看类
java.util.ArrayList<E>:该类需要导包使用。
其中<E>,表示一种指定的数据类型,叫做泛型。E,取自Element(元素)的首字母。出现E的地方,我们使用一种引用数据类型将其替换即可,表示我们将存储哪种引用类型的数据。
例如:ArrayList<String> ArrayList<Student>
查看构造方法
public ArrayList():构造一个内容为空的集合。
基本格式:ArrayList<String> list = new ArrayList<>();
查看成员方法
public boolean add(E e):将指定的元素添加到此集合的尾部。
参数 E e ,在构造ArrayList对象时, <E> 指定了什么数据类型,那么 add(E e) 方法中,只能添加什么数据类型的对象。
package day06; import java.util.*; public class day06_10 { //使用ArrayList集合 存储三个字符串 public static void main(String[] args) { //创建一个字符串集合 ArrayList<String> list = new ArrayList<>(); //定义三个字符串 String s = "刘备",s1 = "关羽",s2 = "张飞"; //通过add()方法 将三个字符串 存储到ArrayList集合中 list.add(s); list.add(s1); list.add(s2); //输出list System.out.println(list); } }
常用方法和遍历
对于元素的操作,基本体现——增、删、查,常用的方法有
增:add(E e)将指定元素添加到此集合尾部
删:remove(int index) 移除下标(索引值)为index的元素
查:get(int index) 查找下标(索引值)为index的元素
查:size():返回此集合中的元素数。遍历集合时,控制索引范围,防止越界
package day06; import java.util.ArrayList; public class day06_11 { //ArrayList的增删查 public static void main(String[] args) { //创建可以存String型元素的数组集合 ArrayList<String> list = new ArrayList<>(); //定义三个String型的变量 String s = "唐僧",s1 = "孙悟空",s2 = "猪八戒",s3 = "沙僧"; //将四个变量存储到list中 增 list.add(s); list.add(s1); list.add(s2); list.add(s3); //删除指定元素 沙僧 list.remove(3); //查 查看集合存储的元素 此处运用get() 和size() for (int i = 0; i < list.size(); i++) { System.out.println(list.get(i)); } } }
如何存储基本数据类型

由图可知,只有int型和char型 需要将数据类型改为Integer 和 Character,其他基本类型只要将首字母大写即可;
package day06; import java.util.ArrayList; public class day06_12 { //查看基本类型的int 和 char型 如何存储 public static void main(String[] args) { ArrayList<Integer> list = new ArrayList<>(); int a = 1,b=2,c=3; list.add(a); list.add(b); list.add(c); System.out.println(list); //char型 ArrayList<Character> list1 = new ArrayList<>(); char c1 = 'c', c2 = 'h',c3 = 'a', c4 = 'r'; list1.add(c1); list1.add(c2); list1.add(c3); list1.add(c4); System.out.println(list1); } }
ArrayList练习
1.生成6个1-33之间的随机数,添加到集合,并遍历
package day06; import java.util.ArrayList; import java.util.Random; public class day06_13 { //生成1-33之间的随机整数,添加到集合 public static void main(String[] args) { ArrayList<Integer> list = new ArrayList<>(); Random r = new Random(); //因为取6位 所以需要<=5 for (int i = 0; i <= 5; i++) { int n = r.nextInt(33); //取1-33需要加1 否则只能取到 0 - 32 list.add(n+1); } System.out.println(list); //遍历输出 for (int i = 0; i < list.size(); i++) { System.out.print(list.get(i)+" "); } } }
2.自定义4名学生,添加到集合并遍历
package day06; import java.util.ArrayList; public class day06_14 { //定义学生集合 并存储四个学生对象 public static void main(String[] args) { //定义学生集合 ArrayList<Student> slist= new ArrayList<>(); //定义4个学生对象 Student s1 = new Student("陈锦轩",18); Student s2 = new Student("陈易安",22); Student s3 = new Student("曾勇",22); Student s4 = new Student("吴炳毅",21); //存储学生对象 slist.add(s1); slist.add(s2); slist.add(s3); slist.add(s4); //遍历输出 for (int i = 0; i < slist.size(); i++) { //定义一个学生对象 接收slist中的每一位学生 Student student = slist.get(i); System.out.println(student.getName()+"----"+student.getAge()); } //对比输出 直接输出slist.get(index) for (int i = 0; i < slist.size(); i++) { //会发现其输出的只是地址值 此地址值时学生存储在集合中的地址值 System.out.println(slist.get(i)); } } }
3.定义以指定格式打印集合的方法(ArrayList类型作为参数),使用{}扩起集合,使用@分隔每个元素。格式参照 {元素@元素@元素}。
package day06; import java.util.ArrayList; public class day06_15 { //打印 {元素@元素@元素}。 public static void main(String[] args) { ArrayList<Integer> list = new ArrayList<>(); int a = 1,b=2,c=3; list.add(a); list.add(b); list.add(c); System.out.print("{"); for (int i = 0; i < list.size(); i++) { if(i == list.size()-1){ System.out.print(list.get(i)+"}"); }else { System.out.print(list.get(i)+"@"); } } } }
4、定义获取集合中的偶数,ArrayList类型作为返回值
package day06; import java.util.ArrayList; import java.util.Random; public class day06_16 { public static void main(String[] args) { Random r = new Random(); ArrayList<Integer> list = new ArrayList<>(); for (int i = 0; i < 20; i++) { int n = r.nextInt(1000)+1; list.add(n); } System.out.println(list); System.out.println(getList(list)); } public static ArrayList<Integer> getList(ArrayList<Integer> list){ ArrayList<Integer> result = new ArrayList<>(); for (int i = 0; i < list.size(); i++) { if(list.get(i)%2 == 0){ result.add(list.get(i)); } } return result; } }

浙公网安备 33010602011771号