1. 程式人生 > >第五章案例 隨機點名器的改進

第五章案例 隨機點名器的改進

案例介紹:

隨機點名器,即在全班同學中隨機的打印出一名同學名字。

要做的隨機點名器,它具備以下3個內容:

l  儲存所有同學姓名

l  總覽全班同學姓名

l  隨機點名其中一人,列印到控制檯


案例分析:

在全班同學中隨機的打印出一名同學名字。

我們對本案例進行分析,得出如下分析結果:

1.儲存全班同學名字

2.列印全班同學每一個人的名字

3.在班級總人數範圍內,隨機產生一個隨機數,查詢該隨機數所對應的同學名字

該案例須有以下3個內容:

l  儲存所有同學姓名

l  總覽全班同學姓名

l  隨機點名其中一人,列印到控`制臺

隨機點名器明確地分為了三個功能。如果將多個獨立功能的程式碼寫到一起,則程式碼相對冗長,我們可以針對不同的功能可以將其封裝到一個方法中,將完整獨立的功能分離出來。

而在儲存同學姓名時,如果對每一個同學都定義一個變數進行姓名儲存,則會出現過多孤立的變數,很難一次性將全部資料持有。此時,我們可以使用陣列解決多個數據的儲存問題。


實現程式碼:

    public staticvoid main(String[] args) {

        System.out.println("--------隨機點名器--------");

// 建立一個儲存多個同學名字的容器(陣列)

        String[]students = new String[3];

        /*

         * 1.儲存全班同學名字

         */

        addStudentName(students);

        /*

         * 2.列印全班同學每一個人的名字

         */

        printStudentName(students);

        /*

         * 3.獲取隨機點名到的學生姓名,並列印

         */

        StringrandomName = randomStudentName(students);

        System.out.println("被點到名的同學是:" + randomName);

    }

l  1.儲存所有同學姓名

/**

     * 1.儲存全班同學名字

     * 建立一個儲存多個同學名字的容器(陣列)

     *  鍵盤輸入每個同學的名字,儲存到容器中(陣列)

     */

publicstaticvoid addStudentName(String[] students) {

//鍵盤輸入多個同學名字儲存到容器中

        Scanner sc = new Scanner(System.in);

for (int i = 0; i < students.length; i++){

            System.out.println("儲存第"+i+"個名稱:");

            students[i] = sc.next();

        }

    }

上述方法中,通過鍵盤錄入,完成為指定陣列元素賦值。方法定義時,將引數定義為字串陣列,用於接收存放的同學姓名。

l  2.列印全班同學每一個人的名字

/**

     * 2列印全班同學每一個人的名字

     */

    public staticvoid printStudentName(String[]students) {

//遍歷陣列,得到每個同學名字

        for (inti = 0; i < students.length; i++) {

            Stringname = students[i];

//列印同學名字

            System.out.println(""+i+"個學生名稱:" + name);

        }

    }

         上述方法中,方法引數students陣列中儲存了所有學生的姓名。通過遍歷將陣列中的每一個元素訪問一遍,得到每一個同學名稱。

l  3.獲取隨機點到的學生姓名

/**

     * 3.在班級總人數範圍內,隨機產生一個隨機數,返回隨機數位置上的學生姓名

     */

    public staticString randomStudentName(String[] students) {

//根據陣列長度,獲取隨機索引

        int index = newRandom().nextInt(students.length);

//通過隨機索引從陣列中獲取名稱

        Stringname = students[index];

//返回隨機點到的名稱

        return name;

    }

         上述方法中,通過隨機數類Random產生一個從0到陣列長度的隨機索引。使用該索引獲取students陣列中對應的值,便得到了全班同學的隨機姓名。