【练习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("* 1.注册 *"); System.out.println("* 2.登陆 *"); System.out.println("* 3.抽奖 *"); System.out.println("*"); /* * 让用户选择菜单(Scanner用法 ) */java作业零基础 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(" 注册成功,请记好您的会员卡号"); System.out .println("*"); System.out.println("用户名 密码 出生日期 会员卡号"); System.out.println(userName + " " + passwd + " " + month + day + " " + 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(" 欢迎" + 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(" 本日的幸运数字为:"); 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(" 恭喜!您是本日的幸运会员!"); break; } } if (i == luckyNumbers.length) { System.out.println(" 抱歉!您不是本日的幸运会员!"); } } 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("角色: " + role + " 种族: " + race + " 性别: " + sex + " 职业: " + 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(血量): " + HP + " MP(魔法值): " + MP + " DMG(伤害值): " + 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("系统退出,谢谢使用!"); } } }
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.bianchenghao6.com/h6javajc/25955.html