练习
1 幸运抽奖练习
核心功能的实现
package cn.javasm.demo;
import java.util.Arrays;
import java.util.Scanner;
public class LuckyDemo {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
String str;
// 记录登录是否成功
boolean loginFlag = false;
do {
// 显示菜单
System.out.println("*****欢迎进入奖客富翁系统*****\n" +
" 1.注册\n" +
" 2.登录\n" +
" 3.抽奖\n" +
"*********************************");
System.out.println("请选择要操作的功能:");
// 获取用户输入的数字
int choice = input.nextInt();
switch (choice){
case 1:
// 用户注册方法
userRegister(input);
break;
case 2:
loginFlag = userLogin(input,loginFlag);
break;
case 3:
lucky(loginFlag);
break;
default:
System.out.println("您的输入有误!请重新输入");
break;
}
System.out.println("是否继续?y/n");
str = input.next();
} while ("y".equals(str));
System.out.println("程序终止!");
}
private static void lucky(boolean loginFlag) {
if (!loginFlag){
System.out.println("请先登录!");
return;
}
// 登录成功 可以开始抽奖 自动获得用户的所有信息
// 随机生成5个4位的随机卡号
int[] luckyNumArray = new int[5];
for (int i = 0; i < luckyNumArray.length; i++) {
luckyNumArray[i] = (int)(Math.random() * (10000 - 1000) + 1000);
}
System.out.println("进入的幸运卡号是" + Arrays.toString(luckyNumArray));
for (int num : luckyNumArray) {
if (num == randomNum){
System.out.println(randomNum + "是今日的幸运会员,全场免费!");
return;
}
}
System.out.println(randomNum + "不是今日的幸运会员");
}
// 登录方法
// 返回值如果是true,代表登录成功。返回false代表登录失败
private static boolean userLogin(Scanner input,boolean loginFlag) {
// 登录之前必须先注册
if (regName == null){
System.out.println("请先注册");
return false;
}
if (loginFlag){
System.out.println("已经登录成功了,是否切换账号登录?y/n");
String str = input.next();
if (!"y".equals(str)){
return true;
}
}
// 定义变量来记录用户登录的次数
int count = 3;
do {
// 只要进入到dowhile循环中就说明已经开始登录了,就使用了一次机会
count--;
System.out.println("输入登录的用户名:");
// 用户名
String loginName = input.next();
System.out.println("输入登录的密码:");
// 密码
String loginPwd = input.next();
// 登录的用户名和密码要和注册时的用户名和密码进行比较
if (loginName.equals(regName) && loginPwd.equals(regPwd)){
System.out.println("登录成功,欢迎您!" + loginName);
return true;
}
if (count == 0){
System.out.println("3次机会使用完毕,退回主页面");
return false;
}
System.out.println("登录失败,还剩下" + count + "次机会,请重新输入!");
} while (true);
}
// 注册用户名
public static String regName;
// 注册密码
public static String regPwd;
// 生成的卡号
public static int randomNum;
// 注册方法
private static void userRegister(Scanner input) {
// 注册流程
System.out.println("输入个人注册信息");
System.out.println("输入注册的name:");
// 获取用户的用户名
regName = input.next();
System.out.println("输入注册的密码:");
regPwd = input.next();
// 产生4位随机数字作为用户的卡号
// [1000,10000) 随机数 = (int)(Math.random() * (最大值 - 最小值) + 最小值);
randomNum = (int)(Math.random() * (10000 - 1000) + 1000);
System.out.println("注册成功,信息如下:");
System.out.println(regName + "\t" + regPwd + "\t" + randomNum);
}
}
附加功能的实现
package cn.javasm.demo;
import javax.swing.*;
import java.util.Arrays;
import java.util.Scanner;
public class LuckyDemo {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
String str;
// 记录登录是否成功
boolean loginFlag = false;
do {
// 显示菜单
System.out.println("*****欢迎进入奖客富翁系统*****\n" +
" 1.注册\n" +
" 2.登录\n" +
" 3.抽奖\n" +
"*********************************");
System.out.println("请选择要操作的功能:");
// 获取用户输入的数字
int choice = input.nextInt();
switch (choice){
case 1:
// 用户注册方法
userRegister(input);
break;
case 2:
loginFlag = userLogin(input,loginFlag);
break;
case 3:
lucky(loginFlag);
break;
default:
System.out.println("您的输入有误!请重新输入");
break;
}
System.out.println("是否继续?y/n");
str = input.next();
} while ("y".equals(str));
System.out.println("程序终止!");
}
private static void lucky(boolean loginFlag) {
if (!loginFlag){
System.out.println("请先登录!");
return;
}
// 登录成功 可以开始抽奖 自动获得用户的所有信息
// 随机生成5个4位的随机卡号
int[] luckyNumArray = new int[5];
for (int i = 0; i < luckyNumArray.length; i++) {
luckyNumArray[i] = (int)(Math.random() * (10000 - 1000) + 1000);
}
System.out.println("进入的幸运卡号是" + Arrays.toString(luckyNumArray));
int randomNum = cardNoArray[userLoginIndex];
for (int num : luckyNumArray) {
if (num == randomNum){
System.out.println(randomNum + "是今日的幸运会员,全场免费!");
return;
}
}
System.out.println(randomNum + "不是今日的幸运会员");
}
// 登录方法
// 返回值如果是true,代表登录成功。返回false代表登录失败
private static boolean userLogin(Scanner input,boolean loginFlag) {
// 登录之前必须先注册
if (nameArray[0] == null){
System.out.println("请先注册");
return false;
}
if (loginFlag){
System.out.println("已经登录成功了,是否切换账号登录?y/n");
String str = input.next();
if (!"y".equals(str)){
return true;
}
}
// 定义变量来记录用户登录的次数
int count = 3;
do {
// 只要进入到dowhile循环中就说明已经开始登录了,就使用了一次机会
count--;
System.out.println("输入登录的用户名:");
// 用户名 gfs 123 bfm 456
String loginName = input.next();
System.out.println("输入登录的密码:");
// 密码
String loginPwd = input.next();
for (int i = 0;i < index;i++){
// 登录的用户名和密码要和注册时的用户名和密码进行比较
if (loginName.equals(nameArray[i]) && loginPwd.equals(passArray[i])){
System.out.println("登录成功,欢迎您!" + loginName);
userLoginIndex = i;
return true;
}
}
if (count == 0){
System.out.println("3次机会使用完毕,退回主页面");
return false;
}
System.out.println("登录失败,还剩下" + count + "次机会,请重新输入!");
} while (true);
}
// 注册用户名
// public static String regName;
// // 注册密码
// public static String regPwd;
// // 生成的卡号
// public static int randomNum;
// 用户名数组
public static String[] nameArray = new String[1];
// 密码数组
public static String[] passArray = new String[1];
// 会员卡号数组
public static int[] cardNoArray = new int[1];
// 维护下一次注册的用户信息的索引 也是数组中实际元素的个数
public static int index = 0;
// 当前登录成功的用户的索引
public static int userLoginIndex = 0;
// 注册方法
private static void userRegister(Scanner input) {
// 可以允许多注册,保存多个用户注册的信息 -->维护多个用户信息 -->数组
// 注册流程
System.out.println("输入个人注册信息");
// 获取用户的用户名 要保证用户名是唯一的
String regName;
do{
System.out.println("输入注册的name:");
regName = input.next();
// 标记值 false代表没有重名,true代表重名了
boolean b = false;
for (int i = 0; i < index; i++) {
if (regName.equals(nameArray[i])){
System.out.println("<<" + regName + ">>重名了,请重新输入");
b = true;
break;
}
}
if (!b) break;
}while (true);
System.out.println("输入注册的密码");
String regPass = input.next();
// 系统产生4位随机数作为卡号
int randomNum = (int)(Math.random() * (10000 - 1000) + 1000);
// 保证数组的空间是够用的
int length = nameArray.length;
if (index >= length){
// 需要扩容
// 定义扩容的长度
int newLength = (length + index) * 2;
nameArray = Arrays.copyOf(nameArray,newLength);
passArray = Arrays.copyOf(passArray,newLength);
cardNoArray = Arrays.copyOf(cardNoArray,newLength);
}
// 把这些信息放入数组的同一个索引处
nameArray[index] = regName;
passArray[index] = regPass;
cardNoArray[index++] = randomNum;
System.out.println(regName + "\t" + regPass + "\t" + randomNum);
}
}
2 补充
2.1 文档注释
注释分为:单行注释 多行注释 文档注释
文档注释是用在类和方法上面的,用来解释类和方法的含义
格式
/** 注释内容*/
方法的文档注释
/**
* 这是一个登录方法
* @param input 键盘录入的对象
* @param loginFlag 是否登录成功的标记 true成功 false失败
* @return 是否登录成功 true成功 false失败
*/
private static boolean userLogin(Scanner input,boolean loginFlag) {
配置类的文档注释的模板
/**
* @author gfs
* @className ${NAME}
* @date ${DATE} ${TIME}
* @version 0.1
* @since jdk11
* @description
*/
生成java文档
2.2 断点调试
F7进入方法
F8下一行
F9跳到下一个断点
``java
/**
- @author gfs
- @className ${NAME}
- @date ${DATE} ${TIME}
- @version 0.1
- @since jdk11
- @description
*/
[外链图片转存中...(img-LFMla4iB-1702646203771)]
[外链图片转存中...(img-yP61ZXan-1702646203772)]
生成java文档
[外链图片转存中...(img-Ktlxp4O8-1702646203772)]
[外链图片转存中...(img-XdTYM7qk-1702646203772)]
## 2.2 断点调试
F7进入方法
F8下一行
F9跳到下一个断点