Java 零基础之作业小练习

时间:2021-10-12 11:10:24

【练习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);

}

}

输出结果:

Java 零基础之作业小练习

【练习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+"%");

}

}

 

 

输出结果:

Java 零基础之作业小练习

【练习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位随机码。

 

Java 零基础之作业小练习Java 零基础之作业小练习
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次,则退出系统。匹配打印恭喜登录成功。

Java 零基础之作业小练习Java 零基础之作业小练习
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类
Java 零基础之作业小练习Java 零基础之作业小练习
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)通过选择菜单的形式进行选择性介绍。

 

Java 零基础之作业小练习Java 零基础之作业小练习
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(魔兽世界人物介绍类)

 

Java 零基础之作业小练习Java 零基础之作业小练习
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(魔兽世界人物介绍测试类)

 

 

后续会陆续更新....