Java 零基礎之作業小練習


【練習1】

需求:輸入學員的名稱及總科目數並顯示每項科目成績的分數,算出總成績。

package demo2;

import java.util.Scanner;    //先import Scanner語法來接受鍵盤輸入

public class Score {

    /**
     * 輸入學員名稱及總科目,打印每門科目的成績並算出平均分
     */
    public static void main(String[] args) {
        System.out.print("請輸入學員姓名:");
        Scanner input = new Scanner(System.in);   
        String name = input.next();        //定義學員名字變量,通過Scanner中.next();方法接收input輸入的值。因為是名字所以變量類型為String
        
        System.out.print("請輸入學員成績的總科目:");
        Scanner input1 = new Scanner(System.in);
        int sc = input1.nextInt();        //同上為了是接收傳入的值
        
        int score = 0;                //學員每門成績的初始化(不賦值也可以。score這里的目的是為了接收下列循環每次輸入的值的)
        int sum =0;                  //學院總成績的初始化
        

    /**
     * for循環得出每門成績,並計算總分數
     */

     //i<sc意義為要小於初始定義的總科目數
        for(int i =0;i<sc;i++){
            System.out.print("輸入"+name+"同學"+sc+"門科目成績中的第"+(i+1)+"門中的成績:");    //+name為顯示學員的名字,+sc為顯示總共的科目數,+(i+1)為循環總科目內的每1門的數量
            score = input.nextInt();        //score接受輸入的值
            sum +=score;               //sum+=score相當於sum =sum+score
        }
        double vrg = ((double)sum)/sc;        //sum跟score都是int型,如果直接除會省略小數。所以在sum總數前加上double再除總科目(sc)得出的結果才精確。
        System.out.println("顯示"+sc+"門成績的平均分:"+vrg);

    }

}

輸出結果:

【練習2】

需求:(1)統計班級總人數中大於80分學生的人數

   (2)算出大於80分學生所占總人數的比例

 

package demo2;

import java.util.Scanner;

public class Score1 {

    /**
     * 循環錄入Java課的學生成績,統計分數大於等於 80分的學生比例
     */
    public static void main(String[] args) {
        int counter = 0;                //計數器為了統計分數大於80分同學的人數
        System.out.print("請輸入班級總人數:");
        Scanner input = new Scanner(System.in);
        int number = input.nextInt();
      
     /**
     * for循環嵌套if語句。 for循環得出每門成績的分數。if語句在這里是為了判斷大於80分同學的數量,然后讓計數器統計人數。
     */

        for (int i = 1; i <= number; i++) {
            System.out.print("請輸入第" + (i + 0) + "門成績:");
            int f = input.nextInt();
            if (f >= 80) {
                counter += 1;
            }

        }
        System.out.println("大於80分的總人數:" + counter);
        input.close();
        double pjf = ((double) counter) / number;
        System.out.println("80分以上的學生所占的比例為:" + pjf*100+"%");

    }

}

 

 

輸出結果:

【練習3】

需求:(1)輸入10個數字,用數組接收這10個數字,並求出正數的和

   (2)用戶輸入非數字時退出程序,數字由控制台輸入

package com.java.demo_2;

import java.util.Arrays;
import java.util.Scanner;

public class CopyOfnumbers {

    /**
     * 輸入10個數字,用數組接收這10個數字,並求出所有正數的和; 當用戶輸入非數字時退出; 數字由控制台輸入
     */
    public static void main(String[] args) {
        String result = "";        //為了顯示正數值
        int sum = 0 ;            //求正數值和

        // 開辟一塊可以存放10個空間的數組
        int[] numbers = new int[10];

        // 導入Scanner方法,用於鍵盤輸出
        Scanner input = new Scanner(System.in);

        /*
         * 定義10個數字,分別存放到numbers數組中去
         * 
         * 注釋: for循環中int為1,所以數組存值時會從index1開始存,跳過0位.那么輸入的數字最多輸入9次.第10次輸入會出現數組越界.
         * 為了解決這個問題numbers[i-1] =input.nextInt();接收鍵盤輸入值時,numbers[i]中的每個元素位減1.這樣當輸入第一個元素值時,
         * 就會找到index0而不是默認的index1了.
         */
        for (int i = 1; i <= 10; i++) {
            System.out.print("請輸入第" + i + "個數:");
            String num = input.next();
            /*
             * 添加輸入是否為數字的判斷,不為數字直接
             */
            if(!num.matches("^(-?[1-9]\\d*\\.?\\d*)|(-?0\\.\\d*[1-9])|(-?[0])|(-?[0]\\.\\d*)$")){
                System.out.println("輸入的不是數字,退出!");
                return;
            }else{numbers[i-1]=Integer.parseInt(num);}
            
            //numbers[i - 1] = input.nextInt();
            if (numbers[i - 1] >= 0) {
                result += numbers[i - 1] + ", ";
                sum += numbers[i - 1];
                
            }
        }

        /*
         * 查看傳入數組中的每個元素值
         */
        System.out.println();
        System.out.println("************************");
        System.out.println("查看數組中的值:");
        System.out.println(Arrays.toString(numbers));
        System.out.println("************************");

        // 按照numbers[i-1]>=0的條件取輸入為正數的值
        System.out.println("[正數是:]" + result);
        System.out.println("[正數和為:]" + sum);

    }

}

【練習4】

需求:(1)做一個幸運抽獎的三級菜單。用戶可選擇商品號碼進入下一層。

   (2)沒層的進入有優先級關系。必須先輸入前者后在進行下一層的操作。

   (3)中獎號碼隨機生成4位隨機碼,拿生成的4為隨機碼來進行抽獎。抽獎生成數設定為5組的4位隨機碼。

 

package com.java.demo_2;

import java.util.Scanner;

public class set_Lucky_draw1 {

    /**
     * 幸運抽獎-實現基本邏輯的輸出顯示
     */
    public static void main(String[] args) {
        String answer = "y"; // 定義下一步選擇變量
        String exit = "q";
        String userName = null; // 用戶名
        String passwd = null; // 用戶密碼
        int cardNumber = 0; // 卡號
        boolean isRegister = false; // 標識是否注冊;
        boolean isLogin = false;// 登陸成功,標志設置為true
        int max = 9999; // 數字碼4位數上限
        int min = 1000; // 數字碼4位數下限

        /*
         * 打印系統主頁 (這里用到do,while循環)
         */
        do {
            System.out.println("********歡迎光臨我要買滑輪管理系統*********");
            System.out.println("*\t\t  1.注冊\t\t\t*");
            System.out.println("*\t\t  2.登陸\t\t\t*");
            System.out.println("*\t\t  3.抽獎\t\t\t*");
            System.out.println("*****************************************");
            /*
             * 讓用戶選擇菜單(Scanner用法 )
             */
            Scanner input = new Scanner(System.in);
            System.out.println("");
            System.out.print("請選擇菜單選項:");
            int choice = input.nextInt();
            /*
             * 根據用戶選擇菜單index號進入下一步
             */
            switch (choice) {
            case 1:
                System.out.println("[幸運滑輪系統>注冊]");
                System.out.println("請填寫用戶個人注冊信息:");
                System.out.print("請輸入用戶名:");
                userName = input.next();
                System.out.print("請輸入密碼(6位):");
                passwd = input.next();
                int month = 1; // 出生月份
                int day = 1; // 出生日期
                if (String.valueOf(passwd).length() == 6) {
                    System.out.println("請輸入用戶出生月份:");
                    month = input.nextInt();
                    if (month < 1 || month > 12) {
                        System.out.println("月份非法!");
                    } else {
                        System.out.println("請輸入用戶出生日期:");
                        day = input.nextInt();
                        if (day <= 0 || day > 31) {
                            System.out.println("出生日期非法!");
                            return;
                        }
                    }

                } else {
                    System.out.println("密碼非法!");
                    return;
                }

                /*
                 * 獲取4位數隨機卡號
                 */
                cardNumber = (int) (Math.random() * (max - min)) + min; // 這句話的具體解釋參照:
                // http://www.myexception.cn/j2se/374687.html

                System.out.println("\n注冊成功,請記好您的會員卡號");
                System.out
                        .println("*********************************************************");
                System.out.println("用戶名\t\t密碼\t\t出生日期\t\t會員卡號");
                System.out.println(userName + "\t\t" + passwd + "\t\t" + month
                        + day + "\t\t" + cardNumber);
                System.out
                        .println("*********************************************************");
                isRegister = true; // 注冊成功,標志定義true

                break;
            case 2:
                System.out.println("[幸運滑輪系統>登陸]");
                /*
                 * 實現用戶登陸功能
                 */
                if (isRegister) {// 判斷用戶是否已經注冊
                    /*
                     * 設置用戶名,用戶密碼登陸次數
                     */
                    for (int i = 1; i <= 3; i++) {
                        System.out.print("請輸入用戶名:");
                        String inputName = input.next();
                        System.out.print("請輸入密碼(6位):");
                        String inputPasswd = input.next();
                        if (String.valueOf(inputPasswd).length() == 6) {

                        } else {
                            System.out.println("密碼不合法!");
                            return;
                        }

                        if (userName.equals(inputName)
                                && passwd.equals(inputPasswd)) {
                            System.out
                                    .println("**********************************");
                            System.out.println("\t歡迎" + userName + "登陸系統!");
                            System.out
                                    .println("**********************************");
                            isLogin = true;
                            break;
                        } else if (i < 3) {
                            // 記數器(統計錯誤次數)
                            System.out
                                    .println("**********************************");
                            System.out
                                    .println("用戶名或密碼錯誤,還有" + (3 - i) + "次機會!");
                            System.out
                                    .println("**********************************");
                        } else {
                            System.out
                                    .println("**********************************");
                            System.out.println("您3次均輸入錯誤!用戶被鎖定並退出系統");
                            System.out
                                    .println("**********************************");
                            return;
                        }
                    }
                } else {// 對isRegister的判斷,條件不符合返回上一層
                    System.out.println("請先注冊,再登陸!");
                }

                break;
            case 3:
                System.out.println("[幸運滑輪系統>抽獎]");
                if (!isLogin) {// 同上用法(判斷用戶是否登陸)
                    System.out.println("請先登陸,再抽獎!");

                } else {

                    // 生成5個4位隨機數字,並保存在數組中
                    int[] luckyNumbers = new int[5];
                    for (int i = 0; i < luckyNumbers.length; i++) {
                        luckyNumbers[i] = (int) (Math.random() * (max - min) + min);
                    }
                    System.out.print("請輸入您的會員卡號:");
                    int yourCard = input.nextInt();
                    int i; // 為下列2個for循環變量使用

                    System.out.print("\n本日的幸運數字為:");
                    for (i = 0; i < luckyNumbers.length; i++) {
                        System.out.print(luckyNumbers[i] + "  ");
                    }
                    for (i = 0; i < luckyNumbers.length; i++) {
                        if (luckyNumbers[i] == yourCard) {
                            System.out.println("\n恭喜!您是本日的幸運會員!");
                            break;
                        }
                    }
                    if (i == luckyNumbers.length) {
                        System.out.println("\n抱歉!您不是本日的幸運會員!");
                    }
                }
                break;

            default:
                System.out.println("[輸入錯誤,無此選項!]");
                break;
            }
            /*
             * 詢問是否繼續下一步
             */
            System.out.print("是否繼續輸入?(y/n):");
            answer = input.next();

        }

        /*
         * 通過do,while中的while循環讓用戶選擇y,n(是否繼續)
         */
        while ("y".equals(answer));
        if ("n".equals(answer)) {
            System.out.println("***********************");
            System.out.println("系統退出,謝謝使用!");
        }
    }

}
幸運抽獎 

【練習5】

需求:(1)屬性:生成一個電影購票類(條件:有姓名跟年齡)

   (2)行為:根據不同的年齡段來制定票價。

   (3)方法:測試不同年齡段打印票價的結果(姓名及年齡的輸入為鍵盤輸入)

 

package com.java.demo_3;

import java.util.Scanner;

/*
 * 電影購票類
 */
public class Film {
    private String name;
    private int age;
    
    /*
     * 封裝Name跟Age
     */
    public void setName() {
        Scanner input = new Scanner(System.in);
        System.out.println("您好親愛的顧客,請輸入您的姓名:");
        this.name = input.next();
    }
    public void setAge(){
        Scanner input = new Scanner(System.in);
        System.out.println("請輸入您的年齡:");
        this.age = input.nextInt();
    }
    /*
     * 判斷不同的年齡段
     */
    public void showInfo(){
        if(this.age<8 && this.age>0){
            System.out.print(this.name+",您的年齡不足8歲,票免費.");
        }else if(this.age>=8 && this.age<=18){
            System.out.print(this.name+",您的年齡屬於青少年年齡,票優惠.購票價格為10元.");
        }else{
            System.out.print(this.name+",您購票價格為20元.");
        }
    }
    /*
     * 測試類
     */
    public static void main(String[] args) {
        Film film = new Film();
        film.setName();
        film.setAge();
        film.showInfo();
    }

}

 

【練習6】
需求:(1)創建一個管理員類

   (2)模擬管理員更改密碼的行為(要求:先輸入用戶名再輸入密碼。密碼先輸入舊密碼)

   (3)輸入的新密碼於舊密碼作校驗,如不匹配錯誤3次,則退出系統。匹配打印恭喜登錄成功。

package com.java.demo_3;
/*
 * 修改密碼類
 */
public class Admin {
    /*
     * 定義變量
     */
    private String adminName;
    private String adminPasswd;
    
    /*
     * geter and setter方法
     */
    public String getAdminName() {
        return adminName;
    }
    public void setAdminName(String adminName) {
        this.adminName = adminName;
    }
    public String getAdminPasswd() {
        return adminPasswd;
    }
    public void setAdminPasswd(String adminPasswd) {
        this.adminPasswd = adminPasswd;
    }
    /*
     * 無參構造方法
     */
    public Admin() {
        super();
        // TODO Auto-generated constructor stub
    }
    
    /*
     * 有參構造方法
     */
    public Admin(String adminName, String adminPasswd) {
        super();
        this.adminName = adminName;
        this.adminPasswd = adminPasswd;
    }
    /*
     * 重寫構造方法
     */
    @Override
    public String toString() {
        return "Admin [adminName=" + adminName + ", adminPasswd=" + adminPasswd
                + "]";
    }
    
}
Admin類
package com.java.demo_3;

import java.util.Scanner;

public class AdminTest1 {
    
    public static void main(String[] args) {
        /*
         * 調用有參構造函數
         */
        Admin admin = new Admin("administrator","123456");
        System.out.println(admin);
        //記數器
        int counter =0;
        /*
         * 接收變量
         */
        String userName = "";
        String userPasswd = "";
        String newPasswd;
        
        /**
         * 用戶登陸
         */
        System.out.println("請輸入用戶帳號:");
        Scanner input = new Scanner(System.in);
        userName = input.next();
        System.out.println("請輸入舊用戶密碼:");
        userPasswd = input.next();
        
        System.out.println("請輸入新用戶密碼:");
        newPasswd = input.next();
        
        while(counter<3){
            if(newPasswd.equals(userPasswd)){
                System.out.println("恭喜登陸成功!");
                return;
            }else{
                System.out.println("輸入的密碼跟舊密碼不匹配,您還可以嘗試登陸"+(counter+1)+"次!");
                counter+=1;
                System.out.println("請輸入舊用戶密碼:");
                userPasswd = input.next();
                System.out.println("請輸入新用戶密碼:");
                newPasswd = input.next();
                continue;    
            }
        }System.out.println("輸入次數超限,退出!");

    }

}
AdminTest類

(上述代碼為初學者編寫。出現代碼的冗余,后續會更新新版本。)

【練習7】
需求:(1)使用面向對象的思想描述游戲中的怪物(模擬魔獸世界人物介紹)

   (2)介紹魔獸世界中各個角色人物的特征以及職業,種族,血量,魔法值,傷害值等屬性。

   (3)通過選擇菜單的形式進行選擇性介紹。

 

package com.java.demo_4;
/*
 * 魔獸世界角色描述
 */
public class Monster {
    String role;        //角色
    String Occupation;  //職業
    String race;        //種族
    String sex;            //性別
    int HP;                //血值
    int MP;                //魔法值
    int DMG;            //傷害值
    public String getRole() {
        return role;
    }
    public void setRole(String role) {
        this.role = role;
    }
    public String getOccupation() {
        return Occupation;
    }
    public void setOccupation(String occupation) {
        Occupation = occupation;
    }
    public String getRace() {
        return race;
    }
    public void setRace(String race) {
        this.race = race;
    }
    public String getSex() {
        return sex;
    }
    public void setSex(String sex) {
        this.sex = sex;
    }
    public int getHP() {
        return HP;
    }
    public void setHP(int hP) {
        HP = hP;
    }
    public int getMP() {
        return MP;
    }
    public void setMP(int mP) {
        MP = mP;
    }
    public int getDMG() {
        return DMG;
    }
    public void setDMG(int dMG) {
        DMG = dMG;
    }
    /*
     * 無參構造方法
     */
    public Monster() {
        super();
        // TODO Auto-generated constructor stub
    }
    
    /*
     * 有參構造方法1(showInfo調用)
     */
    public void showInfo(String role, String occupation, String race, String sex){
        this.role = role;
        this.Occupation = occupation;
        this.race = race;
        this.sex = sex;
        System.out.println("角色:\t" + role + "\n種族:\t" + race + "\n性別:\t" + sex + "\n職業:\t" + Occupation);
    }
    /*
     * 有參構造方法2(toString調用)
     */
    public Monster(String role, String occupation, String race, String sex,
            int hP, int mP, int dMG) {
        super();
        this.role = role;
        Occupation = occupation;
        this.race = race;
        this.sex = sex;
        HP = hP;
        MP = mP;
        DMG = dMG;
    }
    @Override
    public String toString() {
        return "HP(血量):\t" + HP + "\nMP(魔法值):\t" + MP + "\nDMG(傷害值):\t" + DMG;
    }
    


}
Monster(魔獸世界人物介紹類)

 

package com.java.demo_4;

import java.util.Scanner;

public class MonsterTest {

    /**
     * 測試類
     */
    public static void main(String[] args) {
        //boolean flag = false;
        String answer = "y"; // 定義下一步選擇變量

        do {
            Monster monster = new Monster();
            System.out.println("*****************************");
            System.out.println("*   歡迎進入魔獸人物選擇界面    *");
            System.out.println("*       1,種族選擇                            *");
            System.out.println("*       2,職業選擇                            *");
            System.out.println("*       3,退出                                      *");
            System.out.println("*****************************");

            Scanner input = new Scanner(System.in);
            System.out.print("請選擇菜單選項:");
            int choice = input.nextInt();

            switch (choice) {
            case 1:

                System.out.println("*****************************");
                System.out.println("*       1,人類                                     *");
                System.out.println("*       2,獸人                                     *");
                System.out.println("*       3,精靈                                     *");
                System.out.println("*       4,返回上一層                      *");
                System.out.println("*****************************");
                System.out.print("[魔獸人物選擇界面  > 種族選擇:]");
                int choice1 = input.nextInt();
                switch (choice1) {
                case 1:
                    System.out.println("-----------------------------");
                    System.out.println("[人類 >人類屬性介紹:]");
                    monster.setHP(1200);
                    monster.setMP(500);
                    monster.setDMG(2000);
                    System.out.println(monster);

                    break;
                case 2:
                    System.out.println("-----------------------------");
                    System.out.println("[獸人 >獸人屬性介紹:]");
                    monster.setHP(1500);
                    monster.setMP(200);
                    monster.setDMG(2200);
                    System.out.println(monster);

                    break;
                case 3:
                    System.out.println("-----------------------------");
                    System.out.println("[精靈 >精靈屬性介紹:]");
                    monster.setHP(1100);
                    monster.setMP(1000);
                    monster.setDMG(1700);
                    System.out.println(monster);
                }
                //System.out.print("是否繼續輸入?(y/n):");
                //answer = input.next();

            case 2:
                if(choice ==2){
                    System.out.println("*****************************");
                    System.out.println("*       1,戰士                                     *");
                    System.out.println("*       2,法師                                     *");
                    System.out.println("*       3,盜賊                                     *");
                    System.out.println("*       4,獵人                                     *");
                    System.out.println("*       5,聖騎士                                *");
                    System.out.println("*       6,死亡騎士                           *");
                    System.out.println("*       7,牧師                                     *");
                    System.out.println("*       8,薩滿                                    *");
                    System.out.println("*       9,返回上一層                      *");
                    System.out.println("*****************************");
                    System.out.print("[魔獸職業選擇界面  > 種族選擇:]");
                    int choice2 = input.nextInt();
                    switch (choice2) {
                    case 1:
                        monster.showInfo("戰士", "鍛造", "獸人", "男");
                        break;
                    case 2:
                        monster.showInfo("法師", "裁縫", "血精靈", "女");
                        break;
                    case 3:
                        monster.showInfo("盜賊", "剝皮", "亡靈", "男");
                        break;
                    case 4:
                        monster.showInfo("獵人", "工程", "巨魔", "男");
                        break;
                    case 5:
                        monster.showInfo("聖騎士 ", "鍛造", "人類", "女");
                        break;
                    case 6:
                        monster.showInfo("死亡騎士", "鍛造", "人類", "男");
                        break;
                    case 7:
                        monster.showInfo("牧師", "附魔", "暗夜精靈", "女");
                        break;
                    case 8:
                        monster.showInfo("薩滿 ", "采葯", "德萊尼人", "男");
                        break;

                    }
                    
                }
                
                break;

            case 3:
                System.out.println("***********************");
                System.out.println("系統退出,謝謝使用!");

                return;

            default:
                break;
            }
            System.out.print("是否繼續輸入?(y/n):");
            answer = input.next();
        } while ("y".equals(answer));
        if ("n".equals(answer)) {
            System.out.println("***********************");
            System.out.println("系統退出,謝謝使用!");
        }

    }

}
MonsterTest(魔獸世界人物介紹測試類)

 

 

后續會陸續更新....


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM