(1)练习------幸运抽奖
public class Lucky { public static void main(String[] args) { startGame(); } private static void startGame() { Scanner input = new Scanner(System.in); String answer; boolean regFlag = false; //注册标志 boolean loginFlag = false; //登录标志 do { System.out.println("\n*********** 欢迎进入大富翁抽奖系统 ***********\n"); System.out.println(" 1.注 册 "); System.out.println(" 2.登 录 "); System.out.println(" 3.抽 奖 "); System.out.println(" 5.查询所有的会员信息 "); System.out.println(" 4.退 出 \n"); System.out.println("*********************************************\n"); System.out.print("请选择要进行的操作(1-4): "); int choice = input.nextInt(); switch (choice) { case 1: regFlag = register(input); //实际参数用的input,利用参数传递,为了用第一句话 break; case 2: loginFlag = login(input, regFlag, loginFlag); break; case 3: lucky(input, loginFlag); break; case 4: System.out.println("程序退出"); input.close(); //程序退出也要释放资源 return; } System.out.println("是否继续?y/n"); answer = input.next(); } while ("y".equals(answer)); System.out.println("程序结束"); input.close(); } private static void lucky(Scanner input, boolean loginFlag) { if (!loginFlag) { System.out.println("请先登录"); return; } System.out.println("录入会员卡号:"); int memberNo = input.nextInt(); int[] array = new int[5]; for (int i = 0; i < 5; i++) { array[i] = (int) (Math.random() * 9000 + 1000); } System.out.println("本日的幸运卡号:" + Arrays.toString(array)); for (int num : array) { if (num == memberNo) { System.out.println(memberNo + "是幸运会员"); return; } } System.out.println(memberNo + "不是幸运会员"); } private static boolean login(Scanner input, boolean regFlag, boolean loginFlag) { //已经成功地注册数据 if (!regFlag) { System.out.println("请先注册"); return false; } if (loginFlag) { System.out.println("您已经成功登陆过了,无需重复登录"); System.out.println("是否切换账号登录y/n"); String s = input.next(); if ("n".equals(s)) { return true; } } int count = 3; String loginName; do { count--; System.out.println("请填写登录信息 "); System.out.print("请输入用户名: "); loginName = input.next(); System.out.print("请输入密码: "); String loginPass = input.next(); //比较----> 与注册时候的信息比较(信息存储数组中了) for (int index = 0; index <= totalCount; index++) { if (loginName.equals(nameArray[index]) && loginPass.equals(passArray[index])) { System.out.println("欢迎你:" + loginName); return true; } } if (count == 0) { System.out.println("机会使用完毕,返回主页面"); return false; } System.out.println("登录失败,还剩下" + count + "次机会,请重新登录!"); } while (true); } public static int totalCount = 0;//维护的数组中有小的元素个数 以及一个人所有信息的索引位置 public static String[] nameArray = new String[10]; public static String[] passArray = new String[10]; public static int[] randomNoArray = new int[10]; //在一个方法中: 如何获得另外一个方法里面的变量? // 1. 参数传递 // 2. 全局变量: 放在方法之外 所有的方法都可以访问全局变量 private static boolean register(Scanner input) { System.out.println("请填写个人注册信息 "); System.out.print("请输入用户名: "); String name = input.next(); System.out.print("请输入密码: "); String pass = input.next(); int randomNo = (int) (Math.random() * 9000 + 1000); int length = nameArray.length; if (totalCount + 1 >= length) { //扩容 nameArray = Arrays.copyOf(nameArray, 2 * totalCount); //存放用户名的数组扩容 passArray = Arrays.copyOf(passArray, 2 * totalCount); randomNoArray = Arrays.copyOf(randomNoArray, 2 * totalCount); } nameArray[totalCount] = name; passArray[totalCount] = pass; randomNoArray[totalCount] = randomNo; totalCount++; System.out.println("注册成功! 请牢记您的会员号"); System.out.println("用户名\t密码\t会员卡号"); System.out.println(name + "\t" + pass + "\t" + randomNo); return true; } }