隨機點名器,即在全班同學中隨機的打印出一名同學的名字。
要做到隨機點名,需要具備 ①存儲所有的同學姓名 ②顯示全班同學姓名 ③隨機點名其中的一個人,打印到控制檯。
需要涉及的知識點:①數組 ②隨機類
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.獲取隨機點到的姓名,並打印輸出
此時,需要在總人數範圍內,隨機生成一個隨機數,作爲數組的索引來獲取數組中學生的姓名。
代碼如下:
//根據數組長度,獲取隨機索引
int index = new Random().nextInt(students.length);
String name = students[index];
System.out.println("被點到的人爲:"+name);
完整代碼如下:
import java.util.Random;
import java.util.Scanner;
public class CallName {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("-------隨機點名器-------");
// 創建一個存儲多個同學姓名的數組
String[] students = new String[8];
//鍵盤輸入多個同學名字存儲到容器中
Scanner sc = new Scanner(System.in);
for (int i = 0; i < students.length; i++) {
System.out.println("存儲第"+i+"個姓名:");
students[i] = sc.next();
}
//遍歷數組,得到每個同學姓名
for(int i = 0; i < students.length; i++) {
String name = students[i];
//打印姓名
System.out.println("第" + i + "個學生姓名爲:" + name);
}
//根據數組長度,獲取隨機索引
int index = new Random().nextInt(students.length);
String name = students[index];
System.out.println("被點到的人爲:"+name);
}
}
顯然在進行代碼實現的時候,將所有的功能都放在main方法中,並不是一個最明智的做法。隨機點名器明確地分爲三個功能。如果將多個獨立功能的代碼寫到一起,則代碼相對冗長,而且不利於閱讀和修改。可以針對不同功能將其封裝到一個方法中,將完整獨立的功能分離出來。
代碼的實現步驟:
1.main方法中調用三個獨立的方法
public static void main(String[] args){
//定義數組,存儲學生姓名
String[] names = new String[8];
//調用添加姓名方法
addStudent(names);
//調用遍歷數組方法
printStudentName(names);
//調用隨機姓名的方法
String name = randomStudentName(names);
System.out.println(name);
}
2.存儲所有同學的姓名
這裏定義一個向數組中添加學生姓名的addStudent()方法。要定義方法就要考慮它的返回值和參數。由於是向數組中添加,因此沒有返回值,參數就是數組
public static void addStudent(String[] names){
names[0] = "張三";
names[1] = "李四";
names[2] = "王五";
names[3] = "李蕾";
names[4] = "韓梅梅";
names[5] = "小名";
names[6] = "老王";
names[7] = "小華";
}
3.打印全班同學每個人的姓名
這裏需要定義一個打印輸出所有人姓名的printStudentName()方法。也就是將存儲有學生姓名的數組作爲參數並遍歷輸出,顯然沒有返回值。
public static void printStudentName(String[] names){
for(int i = 0 ; i < names.length ;i++){
System.out.println(names[i]);
}
}
4.獲取隨機點到的學生姓名
這裏需要定義一個獲取隨機姓名的randomStudentName()的方法,這個方法使用隨機數做索引在數組在找出某一學生姓名,那麼返回值就是學生姓名,參數還是存放學生姓名的數組。
public static String randomStudentName(String[] names){
Random ran = new Random();
int index = ran.nextInt(names.length);
return names[index];
}
結合以上四個步驟得出的完整代碼爲:
import java.util.Random;
public class CallName{
public static void main(String[] args){
//定義數組,存儲學生姓名
String[] names = new String[8];
//調用添加姓名方法
addStudent(names);
//調用遍歷數組方法
printStudentName(names);
//調用隨機姓名的方法
String name = randomStudentName(names);
System.out.println(name);
}
public static String randomStudentName(String[] names){
Random ran = new Random();
int index = ran.nextInt(names.length);
return names[index];
}
public static void printStudentName(String[] names){
for(int i = 0 ; i < names.length ;i++){
System.out.println(names[i]);
}
}
public static void addStudent(String[] names){
names[0] = "張三";
names[1] = "李四";
names[2] = "王五";
names[3] = "李蕾";
names[4] = "韓梅梅";
names[5] = "小名";
names[6] = "老王";
names[7] = "小華";
}
}
以上就是兩種實現隨機數點名的代碼。