【练习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;Admin类
/*
* 修改密码类
*/
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;AdminTest类
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;Monster(魔兽世界人物介绍类)
/*
* 魔兽世界角色描述
*/
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;MonsterTest(魔兽世界人物介绍测试类)
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("系统退出,谢谢使用!");
}
}
}
后续会陆续更新....