【練習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 + "]"; } }

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("輸入次數超限,退出!"); } }
(上述代碼為初學者編寫。出現代碼的冗余,后續會更新新版本。)
【練習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; } }

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("系統退出,謝謝使用!"); } } }
后續會陸續更新....