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(魔兽世界人物介绍测试类)
后续会陆续更新....
Java 零基础之作业小练习的更多相关文章
- 【JAVA零基础入门系列】Day4 变量与常量
这一篇主要讲解Java中的变量,什么是变量,变量的作用以及如何声明,使用变量. 那么什么是变量?对于初学者而言,可以将变量理解为盒子,这些盒子可以用来存放数据,不同类型的数据需要放在对应类型的盒子里. ...
- 【JAVA零基础入门系列】Day5 Java中的运算符
运算符,顾名思义就是用于运算的符号,比如最简单的+-*/,这些运算符可以用来进行数学运算,举个最简单的栗子: 已知长方形的长为3cm,高为4cm,求长方形的面积. 好,我们先新建一个项目,命名为Rec ...
- 【JAVA零基础入门系列】Day11 Java中的类和对象
今天要说的是Java中两个非常重要的概念--类和对象. 什么是类,什么又是对象呢?类是对特定集合的概括描述,比如,人,这个类,外观特征上,有名字,有年龄,能说话,能吃饭等等,这是我们作为人类的相同特征 ...
- 【JAVA零基础入门系列】Day13 Java类的继承与多态
继承是类的一个很重要的特性,什么?你连继承都不知道?你是想气死爸爸好继承爸爸的遗产吗?(滑稽) 开个玩笑,这里的继承跟我们现实生活的中继承还是有很大区别的,一个类可以继承另一个类,继承的内容包括属性跟 ...
- 【JAVA零基础入门系列】Day14 Java对象的克隆
今天要介绍一个概念,对象的克隆.本篇有一定难度,请先做好心理准备.看不懂的话可以多看两遍,还是不懂的话,可以在下方留言,我会看情况进行修改和补充. 克隆,自然就是将对象重新复制一份,那为什么要用克隆呢 ...
- 【JAVA零基础入门系列】Day15 对象的比较
最近一直有事,博客也停笔了一段时间,十分抱歉. 这一篇主要讲讲对象的比较,什么是对象的比较,我们知道两个数值类型只需要用"=="符号即可进行相等判断,但如果是两个Goods对象呢? ...
- 零基础入门微信小程序开发
注:本文来源于:<零基础入门微信小程序开发> 课程介绍 本达人课是一个系列入门教程,目标是从 0 开始带领读者上手实战,课程以微信小程序的核心概念作为主线,介绍配置文件.页面样式文件.Ja ...
- Java 零基础跑起第一个程序
Java 零基础跑起第一个程序 一 概述 1 java代码编译 编译后才干在计算机中执行.编译就是把人能看懂的代码转换成机器能看懂的形式 2 java的长处 一次编译.到处执行.由于java代码是在 ...
- 【JAVA零基础入门系列】Day2 Java集成开发环境IDEA
开发环境搭建好之后,还需要一个集成开发环境也就是IDE来进行编程.这里推荐的IDE是IDEA,那个老掉牙的Eclipse还是先放一边吧,(手动滑稽). IDEA的下载地址:http://www.jet ...
随机推荐
- iOS收到Push后播放声音和震动
一.APNS 1.注册 [cpp] [[UIApplication sharedApplication] registerForRemoteNotificationTypes:UIRemoteNoti ...
- Laravel学习笔记(三)数据库 数据库迁移
该章节内容翻译自<Database Migration using Laravel>,一切版权为原作者. 原作者:Stable Host, LLC 翻译作者:Bowen Huang 正文: ...
- shape 代码生成器
场景: 可以尝试使用shape的xml文件来代替图片. 可以起到减小包大小的效果. Android Button Maker是一个可以在线生成按钮代码的工具.Android API提供了XML文件定义 ...
- Create a geoprocessing tool to buffer a layer and retrieve messages____sync
using System.Drawing; using System.Text; using System.Windows.Forms; using System.Runtime.InteropSer ...
- vs2012中添加lib,.h文件方法(原)
项目.属性.C/C++.附加包含目录:填写附加头文件(*.h)所在目录 分号间隔多项项目.属性.链接器.附加库目录:填写附加依赖库(*.lib)所在目录 分号间隔多项项目.属性.链接器(点前面的+展开 ...
- win7操作系统32位或是64位系统上安装 sql2005 点滴
在 win7 上这安装 sql2005 ,需要 .netFramewori2.0 框架,更需要 IIS 支持.否则 sqlserver2005 安装 到最后,就会失败,但此时已经在机器上安装了 .ne ...
- Python体验(08)-图形界面之工具栏和状态栏
# coding=utf-8 import wx # 导入必须的Python包 class MenuForm(wx.Frame): def OnQuit(self,event): self.Close ...
- 前端菜鸟的编程之路之css的用法
/* * * 固定特殊类 * */ /* ===========固定宽度*============= */ .ld-with80{width: 80px} .ld-with50{width: 50px ...
- MacOS changed System Integrity Protection status
禁止 System Integrity Protection 按住 command + R 重启系统 进入单用户模式 启动bash工具: 输入: csrutil disable 输入:reboot 启 ...
- Android开发--Socket通信
一.Socket通信简介 Android与服务器的通信方式主要有两种,一是Http通信,一是Socket通信.两者的最大差异在于,http连接使用的是"请求-响应方式",即在请求时 ...