Scanner类、Random类、ArrayList集合的基本使用

傷城~ 2024-03-31 11:19 205阅读 0赞

1.Scanner类


了解API的使用方式,我们通过Scanner类,熟悉一下查询API,并使用类的步骤。

1.1什么是Scanner类


一个人可以解析基本类型和字符串的简单文本扫描器。例如,如以下代码使用户能够从System.in中读取一个数:

  1. Scanner sc = new Scanner(System.in
  2. int i = sc.nextInt();

注意:System.in系统输入指的是通过键盘录入数据。

1.2引用数据类型使用步骤


导包

使用import关键字导包,在类的所有代码之前导包,引入要使用的类型,java.lang包下的所有类无需导入。

格式:

  1. import 包名.类名;

举例:

  1. java.util.Scanner;

1.3创建对象


使用该类的构造方法,创建一个该类的对象。

格式:

  1. 数据类型 变量名 = new 数据类型(参数列表);

举例:

  1. Scanner sc = new Scanner(System.in);

1.4使用

  1. 对象名.成员方法名();
  2. 获取键盘输入的一个int数字:int num=sc.nextInt();
  3. 获取键盘输入的一个字符串:String str=sc.nextInt();

举例:

  1. import java.util.Scanner;//1.导包
  2. public class TestScanner {
  3. public static void main(String[] args) {
  4. //2.创建
  5. //备注:System.in代表从键盘进行输入
  6. Scanner sc=new Scanner(System.in);
  7. //3.获取键盘输入的int数字
  8. int num = sc.nextInt();
  9. System.out.println("输入的int数字是:" + num);
  10. //4.获取键盘输入的字符串
  11. String str=sc.next();
  12. System.out.println("输入的字符串是:" + str);
  13. }
  14. }

练习

题目1:

键盘输入两个int数字,并且求出和值。

  1. 思路:
  2. 1.既然需要键盘输入,那么就用Scanner
  3. 2.Scanner的三个步骤:导包、创建、使用。
  4. 3.需要的是两个数字,所以要调用两次nextInt方法。
  5. 4.得到了两个数字,就需要加在一起。
  6. 5.将结果打印输出。
  7. import java.util.Scanner;
  8. public class TestScanner2 {
  9. public static void main(String[] args) {
  10. Scanner scanner=new Scanner(System.in);
  11. System.out.println("请输入第一个数字:");
  12. int i = scanner.nextInt();
  13. System.out.println("请输入第二个数字:");
  14. int n = scanner.nextInt();
  15. int result=i+n;
  16. System.out.println("结果是:" + result);
  17. }
  18. }

运行的结果是:

  1. 请输入第一个数字:
  2. 1
  3. 请输入第二个数字:
  4. 5
  5. 结果是:6
  6. Process finished with exit code 0

题目2:

键盘输入三个int数字,然后求出其中的 最大值。

  1. 思路:
  2. 1.既然是键盘输入,肯定需要用到Scanner
  3. 2.Scanner三个步骤:导包、创建、使用nextInt()方法
  4. 3.既然三个数字,那么调用三次nextInt()方法,得到三个int变量
  5. 4.无法同时判断三个数字谁最大,应该转换为两个步骤:
  6. 4.1首先判断前两个当中谁最大,拿到前两个的最大值
  7. 4.2拿着前两个中的最大值,再和三个数字比较,得到三个数字当中的最大值
  8. 5.打印最终结果
  9. import java.util.Scanner;
  10. public class TestScannerMax {
  11. public static void main(String[] args) {
  12. Scanner scanner = new Scanner(System.in);
  13. System.out.println("请输入第一个数字:");
  14. int i = scanner.nextInt();
  15. System.out.println("请输入第二个数字:");
  16. int n = scanner.nextInt();
  17. System.out.println("请输入第三个数字:");
  18. int z = scanner.nextInt();
  19. //首先得到前两个数字当中的最大值
  20. int temp = i > n ? i : n;
  21. int max = temp > z ? temp : z;
  22. System.out.println("最大值是:" + max);
  23. }
  24. }

运行的结果是:

  1. 请输入第一个数字:
  2. 5
  3. 请输入第二个数字:
  4. 8
  5. 请输入第三个数字:
  6. 1
  7. 最大值是:8
  8. Process finished with exit code 0

2.Random基本使用


2.1 random类 : 用于生成随机数字

2.2 使用的三个步骤

导包【import java.util.Random;】
创建【Random r=new Random();//小括号中留空即可】
使用:获取一个随机的int数字(范围是int所有范围,有正负两种):int num=r.nextInt()

2.3练习:

题目1:

根据int变量n的值,来获取随机数字,范围是[1,n],可以取到1也可以取到n.

  1. 思路:
  2. 1.定义一个int变量n,随意赋值
  3. 2.要使用Random:三个步骤,导包、创建、使用
  4. 3.如果写10,那么就是0-9,然而想要的是1-10,可以发现:整体+1即可。
  5. 4.打印随机数字
  6. import java.util.Random;
  7. public class TestRandom {
  8. public static void main(String[] args) {
  9. int n = 5;
  10. Random r = new Random();
  11. for (int i = 0; i < 100; i++) {
  12. //本来范围是[0,n],整体n+1之后变成了[1,n+1],也就是[1,n]
  13. int result = r.nextInt(n) + 1;
  14. System.out.println(result);
  15. }
  16. }
  17. }

题目2:

用代码模拟猜数字的小游戏。

  1. 思路:
  2. 1.首先需要产生一个随机数字,并且一旦产生不再变化。用RandomnextInt方法
  3. 2.需要键盘输入,所以用到了Scanner
  4. 3.获取键盘输入的数字,用Scanner当中的nextInt方法
  5. 4.已经得到了两个数字,判断(if)一下:
  6. 如果太大了,提示太大,并且重试;
  7. 如果太小了,提示太小,并且重试;
  8. 如果猜中了,游戏结束。
  9. 5.重试就是再来一次,循环次数不确定,用while(true)
  10. public static void main(String[] args) {
  11. //使用Scanner 和 Random完成一个猜数字小游戏,猜1-100之间的数字
  12. Scanner scanner=new Scanner(System.in);
  13. //1.产生一个1-100之间的随机数
  14. Random random=new Random();
  15. int num = random.nextInt(100) + 1;//随机100个数字0-99,然后+1 就是1-100
  16. //定义一个用来统计用户才对用了多少次
  17. int cout=0;
  18. //2.不断地执行循环,让用户输入要猜的数字并进行大小提示
  19. do {
  20. System.out.println("输入猜的数字");
  21. int input = scanner.nextInt();
  22. if (input>num){
  23. System.out.println("猜大了");
  24. }else if (input<num){
  25. System.out.println("猜小了");
  26. }else {
  27. System.out.println("恭喜你,猜对了!");
  28. break;
  29. }
  30. cout++;
  31. }while (true);
  32. //3.结束循环用户猜对,打印输出
  33. System.out.println("你猜对了数字"+num+"用了"+cout+"次");
  34. }

运行的结果是:

  1. 输入猜的数字
  2. 50
  3. 猜小了
  4. 输入猜的数字
  5. 70
  6. 猜大了
  7. 输入猜的数字
  8. 60
  9. 猜大了
  10. 输入猜的数字
  11. 55
  12. 猜小了
  13. 输入猜的数字
  14. 58
  15. 猜大了
  16. 输入猜的数字
  17. 57
  18. 猜大了
  19. 输入猜的数字
  20. 56
  21. 恭喜你,猜对了!
  22. 你猜对了数字56用了6
  23. Process finished with exit code 0

3.ArrayList集合


  1. 数组的长度不可以发生改变,但ArrrayList集合的长度是可以随意变化的
  2. 对于ArrayList来说有一个尖括号代表泛型…泛型也就是装在集合当中所有的元素,都是统一的什么类型

注意:泛型只能是引用类型,不能是基本类型(byte int short long float double boolean char)

3.1创建

  1. //表示创建了一个ArrayList集合,集合的名称是List,立里面装的全都是String字符串类型的数据
  2. ArrayList<String> list=new ArrayList<>( );

3.2注意事项:

  1. 对于ArrayList集合来说,直接打印得到的不是地址值而是内容
  2. 如果内容为空得到的是空的中括号[ ]
  3. 向集合中添加一些数据用add方法;【list.add(“添加”)】然后可以打印输出”添加“ System.out.println(list);

3.3ArrayList常用方法有:

对于元素的操作,基本体现在——增、删、查。常用的方法有:

  • public boolean add(E e) :将指定的元素添加到此集合的尾部。(备注:对于ArrayList集合来说,add添加动作一定是成功的,所以返回值可用可不用,但是对于其他集合,add添加动作不一定成功)
  • public E remove(int index) :移除此集合中指定位置上的元素。返回被删除的元素
  • public E get(int index) :返回此集合中指定位置上的元素。返回获取的元素。
  • public int size() :返回此集合中的元素数。遍历集合时,可以控制索引范围,防止越界。

遍历可用for循环。

3.4 存储基本数据类型








































基本类型  基本类型包装类
byte Byte
short Short
int    Integer
long  Long
float Float
double Double
char  Character
boolean Boolean

3.5

题目:

用代码写出随机不重复点名

  1. public static class ArrayListTest{
  2. public static void main(String[] args){
  3. //可以使用Arrays的asList实现序列化一个集合
  4. List<String> list= Arrays.asList("张三","李四","王二","麻子","光头强");
  5. //把list作为参数重新构建一个新的ArrayList集合
  6. ArrayList<String> names=new ArrayList<>(list);
  7. //使用Scanner、Random、ArrquList完成一个不重复的点名程序
  8. Random random=new Random();
  9. Scanner scanner=new Scanner(System.in);
  10. while (true){
  11. //如果集合中没有元了,则结束循环
  12. if(names.size()==0){
  13. System.out.println("已完成所有学生抽查,抽查结束请重新开始!");
  14. break;
  15. }
  16. System.out.println("确认点名请输入Y/y");
  17. String input = scanner.next();
  18. if (input.equals("Y")|| input.equals("y")){
  19. //随机一个集合的下标
  20. int index = random.nextInt(names.size());
  21. System.out.println("本次抽到: "+names.get(index));
  22. //该学生已被抽到,把他从集合中移除
  23. names.remove(index);
  24. }else {
  25. System.out.println("本次抽查结束!");
  26. break;
  27. }
  28. }
  29. }
  30. }

运行的结果是:学生抽查完成,则结束抽查,请重新开始!

  1. 确认点名请输入Y/y
  2. y
  3. 本次抽到: 王二
  4. 确认点名请输入Y/y
  5. y
  6. 本次抽到: 李四
  7. 确认点名请输入Y/y
  8. y
  9. 本次抽到: 光头强
  10. 确认点名请输入Y/y
  11. y
  12. 本次抽到: 张三
  13. 确认点名请输入Y/y
  14. y
  15. 本次抽到: 麻子
  16. 已完成所有学生抽查,抽查结束请重新开始!
  17. Process finished with exit code 0

如果写其他的字母则抽查结束!

  1. 确认点名请输入Y/y
  2. y
  3. 本次抽到: 李四
  4. 确认点名请输入Y/y
  5. y
  6. 本次抽到: 张三
  7. 确认点名请输入Y/y
  8. n
  9. 本次抽查结束!
  10. Process finished with exit code 0

发表评论

表情:
评论列表 (有 0 条评论,205人围观)

还没有评论,来说两句吧...

相关阅读