一、案例介绍
随机点名器,即在全班同学中随机的打印出一名同学名字。
要做的随机点名器,它具备以下3个内容:
- 存储所有同学姓名
- 总览全班同学姓名
- 随机点名其中一人,打印到控制台
二、案例需求分析
在全班同学中随机的打印出一名同学名字。
对本案例进行分析,得出如下分析结果:
1.存储全班同学名字
2.打印全班同学每一个人的名字
3.在班级总人数范围内,随机产生一个随机数,查找该随机数所对应的同学名字
在存储同学姓名时,如果对每一个同学都定义一个变量进行姓名存储,则会出现过多孤立的变量,很难一次性将全部数据持有。此时,我们可以使用数组解决多个数据的存储问题。
三、实现代码步骤
编写CallName.java文件,完成程序的编写。
//main方法中进行步骤1、2、3的代码实现
public static void main(String[] args) {
System.out.println("--------随机点名器--------");
// 创建一个存储多个同学名字的容器(数组)
String[] students = new String[3];
//1.存储全班同学名字
//2.打印全班同学每一个人的名字
//3.获取随机点名到的学生姓名,并打印
}
(1)存储所有同学姓名
/**
* 1.存储全班同学名字
* 创建一个存储多个同学名字的容器(数组)
* 键盘输入每个同学的名字,存储到容器中(数组)
*/
//键盘输入多个同学名字存储到容器中
Scanner sc = new Scanner(System.in);
for (int i = 0; i < students.length; i++) {
System.out.println("存储第"+i+"个名称:");
students[i] = sc.next();
}
(2)打印全班同学每一个人的名字
/**
* 2打印全班同学每一个人的名字
*/
//遍历数组,得到每个同学名字
for (int i = 0; i < students.length; i++) {
String name = students[i];
//打印同学名字
System.out.println("第"+i+"个学生名称:" + name);
}
(3)获取随机点名到的学生姓名,并打印
/**
* 3.在班级总人数范围内,随机产生一个随机数
*/
//根据数组长度,获取随机索引
int index = new Random().nextInt(students.length);
//通过随机索引从数组中获取名称
String name = students[index];
//返回随机点到的名称
上述代码中,通过随机数类Random产生一个从0到数组长度的随机索引。使用该索引获取students数组中对应的值,便得到了全班同学的随机姓名。
四、整体代码
import java.util.Random;
import java.util.Scanner;
public class CallName{
public static void main(String[] args){
System.out.println("--------随机点名器--------");
// 创建一个存储多个同学名字的容器(数组)
String[] students = new String[3];
/**
* 1.存储全班同学名字
* 创建一个存储多个同学名字的容器(数组)
* 键盘输入每个同学的名字,存储到容器中(数组)
*/
//键盘输入多个同学名字存储到容器中
Scanner sc = new Scanner(System.in);
for (int i = 0; i < students.length; i++) {
System.out.println("存储第"+i+"个名称:");
students[i] = sc.next();
}
/**
* 2打印全班同学每一个人的名字
*/
//遍历数组,得到每个同学名字
for (int i = 0; i < students.length; i++) {
String name = students[i];
//打印同学名字
System.out.println("第"+i+"个学生名称:" + name);
}
/**
* 3.在班级总人数范围内,随机产生一个随机数
*/
//根据数组长度,获取随机索引
Random a = new Random();
int index = a.nextInt(students.length);
//通过随机索引从数组中获取名称
String name = students[index];
//返回随机点到的名称
System.out.println("===================");
System.out.println(name);
}
}