java入门小练习_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

for(int i =0;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);

}

}

输出结果:

e56f781cd62aeeeab8f4487533d901c4.png

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

}

}

输出结果:

a8240d2c25f0ce3beca64183b0530190.png

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

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

packagecom.java.demo_2;importjava.util.Scanner;public classset_Lucky_draw1 {/*** 幸运抽奖-实现基本逻辑的输出显示*/

public static voidmain(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= newScanner(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次,则退出系统。匹配打印恭喜登录成功。

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

packagecom.java.demo_3;/** 修改密码类*/

public classAdmin {/** 定义变量*/

privateString adminName;privateString adminPasswd;/** geter and setter方法*/

publicString getAdminName() {returnadminName;

}public voidsetAdminName(String adminName) {this.adminName =adminName;

}publicString getAdminPasswd() {returnadminPasswd;

}public voidsetAdminPasswd(String adminPasswd) {this.adminPasswd =adminPasswd;

}/** 无参构造方法*/

publicAdmin() {super();//TODO Auto-generated constructor stub

}/** 有参构造方法*/

publicAdmin(String adminName, String adminPasswd) {super();this.adminName =adminName;this.adminPasswd =adminPasswd;

}/** 重写构造方法*/@OverridepublicString toString() {return "Admin [adminName=" + adminName + ", adminPasswd=" +adminPasswd+ "]";

}

}

Admin类

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

packagecom.java.demo_3;importjava.util.Scanner;public classAdminTest1 {public static voidmain(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= newScanner(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)通过选择菜单的形式进行选择性介绍。

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

packagecom.java.demo_4;/** 魔兽世界角色描述*/

public classMonster {

String role;//角色

String Occupation; //职业

String race; //种族

String sex; //性别

int HP; //血值

int MP; //魔法值

int DMG; //伤害值

publicString getRole() {returnrole;

}public voidsetRole(String role) {this.role =role;

}publicString getOccupation() {returnOccupation;

}public voidsetOccupation(String occupation) {

Occupation=occupation;

}publicString getRace() {returnrace;

}public voidsetRace(String race) {this.race =race;

}publicString getSex() {returnsex;

}public voidsetSex(String sex) {this.sex =sex;

}public intgetHP() {returnHP;

}public void setHP(inthP) {

HP=hP;

}public intgetMP() {returnMP;

}public void setMP(intmP) {

MP=mP;

}public intgetDMG() {returnDMG;

}public void setDMG(intdMG) {

DMG=dMG;

}/** 无参构造方法*/

publicMonster() {super();//TODO Auto-generated constructor stub

}/** 有参构造方法1(showInfo调用)*/

public voidshowInfo(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调用)*/

publicMonster(String role, String occupation, String race, String sex,int hP, int mP, intdMG) {super();this.role =role;

Occupation=occupation;this.race =race;this.sex =sex;

HP=hP;

MP=mP;

DMG=dMG;

}

@OverridepublicString toString() {return "HP(血量):\t" + HP + "\nMP(魔法值):\t" + MP + "\nDMG(伤害值):\t" +DMG;

}

}

Monster(魔兽世界人物介绍类)

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

packagecom.java.demo_4;importjava.util.Scanner;public classMonsterTest {/*** 测试类*/

public static voidmain(String[] args) {//boolean flag = false;

String answer = "y"; //定义下一步选择变量

do{

Monster monster= newMonster();

System.out.println("*****************************");

System.out.println("* 欢迎进入魔兽人物选择界面 *");

System.out.println("* 1,种族选择 *");

System.out.println("* 2,职业选择 *");

System.out.println("* 3,退出 *");

System.out.println("*****************************");

Scanner input= newScanner(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(魔兽世界人物介绍测试类)

后续会陆续更新....

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值