如下是功能實(shí)現(xiàn)的代碼:
import java.lang.invoke.SwitchPoint;
import java.util.Arrays;
import java.util.Scanner;
//抽獎(jiǎng)系統(tǒng)
public class Test01 {
static String userName = ""; //用戶名
static String password = ""; //密碼
static int i = 0; //登錄次數(shù)
static boolean islogin = false; //登錄狀態(tài),默認(rèn)是沒有登陸的
public static void main(String[] args) {
while (true) {
System.out.println("*****歡迎進(jìn)入抽獎(jiǎng)系統(tǒng)*****");
System.out.println(" 1,注冊(cè) \n 2,登錄 \n 3,參加抽獎(jiǎng)");
System.out.println("********************");
System.out.println("請(qǐng)選擇:");
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
//根據(jù)用戶輸入,進(jìn)行相關(guān)的操作
doSome(num);
System.out.println("是否退出:(exit)");
String string = sc.next();
if ("exit".equals(string)) {
return;
}
}
}
//根據(jù)用戶輸入,進(jìn)行相關(guān)的操作
static void doSome(int num) {
if (num > 3 || num < 1) { //只能輸入1,2,3
System.out.println("輸入錯(cuò)誤,請(qǐng)重新輸入");
return;
}
switch (num) {
case 1 : { // 注冊(cè)
System.out.println("抽獎(jiǎng) > 注冊(cè)");
//1,判斷是否已經(jīng)注冊(cè)過了,如果是,就不需要在注冊(cè)
boolean regist = isRegist();
if (regist) {
System.out.println("已經(jīng)注冊(cè)過了,請(qǐng)執(zhí)行其他操作");
return;
}else {
//2,用兩個(gè)變量來保存一下用戶名和密碼
Scanner sc = new Scanner(System.in);
System.out.println("請(qǐng)輸入用戶名");
userName = sc.next();
System.out.println("請(qǐng)輸入密碼");
password = sc.next();
//3,注冊(cè)成功,用戶名...
System.out.println("注冊(cè)成功,用戶名:" + userName);
}
break;
}
case 2 : { // 登錄
System.out.println("抽獎(jiǎng) > 登錄");
//1,判斷是否注冊(cè)過,如果是,就可以登錄,否則返回注冊(cè)
if (islogin) {
System.out.println("已登錄");
break;
}
boolean regist = isRegist();
if (regist) { //注冊(cè)過
login();
}else { // 沒有注冊(cè)過
System.out.println("請(qǐng)先注冊(cè)...");
}
break;
}
default: { // 抽獎(jiǎng)
System.out.println("抽獎(jiǎng) > 抽獎(jiǎng)");
//判斷是否登錄狀態(tài)
if (islogin == false) {
System.out.println("未登錄,請(qǐng)先登錄");
return;
}
//如果是登錄狀態(tài),抽獎(jiǎng),否則,返回登錄
//代碼到這里,表明已經(jīng)登錄成功了
System.out.println("請(qǐng)輸入您的幸運(yùn)編號(hào)(4位):");
Scanner scanner = new Scanner(System.in);
int luckNum = scanner.nextInt();
//獲取隨機(jī)出來的隨機(jī)數(shù)字
int[] arr = getArr();
for (int i = 0; i < arr.length; i++) {
if (luckNum == arr[i]) {
System.out.println("恭喜你中獎(jiǎng)啦");
return;
}
}
System.out.println("努努力,恭喜下次中獎(jiǎng)");
//抽獎(jiǎng) 1,輸入4位幸運(yùn)數(shù)字 2,隨機(jī)一個(gè)數(shù)組
//如果輸入的數(shù)字在數(shù)組中,就中獎(jiǎng)了,否則謝謝惠顧
break;
}
}
}
//判斷是否注冊(cè)過 true是注冊(cè)過 false是未注冊(cè)過
static boolean isRegist () {
//字符串寫在前面,null沒有equals方法
if ("".equals(userName) || userName == null ||
"".equals(password) || password == null) {
return false;
}
return true;
}
//判斷用戶名和密碼與存儲(chǔ)的是否相等.
static boolean login(String name,String passwd) {
if (Test01.userName.equals(name) && (Test01.password.equals(passwd))) {
//每次登錄成功以后歸零
i= 0;
return true;
}else {
return false;
}
}
//登錄
static void login () {
Scanner sc = new Scanner(System.in);
System.out.println("請(qǐng)輸入用戶名");
String userName = sc.next();
System.out.println("請(qǐng)輸入密碼");
String password = sc.next();
//判斷用戶名和密碼與存儲(chǔ)的是否相等
boolean login = login(userName, password);
if (login) { //登錄成功
System.out.println("登錄成功");
Test01.islogin = true; //把當(dāng)前的狀態(tài)標(biāo)記成登錄成功
}else { //登錄失敗
System.out.println("請(qǐng)重新登錄");
//輸入三次以后退出
if (i >= 3) {
System.out.println("登錄次數(shù)過多,明天再試吧");
System.exit(-1); //虛擬機(jī)終止
return;
}
i++;
//調(diào)用自己本身
login();
}
}
//抽獎(jiǎng)環(huán)節(jié)隨機(jī)數(shù)組的函數(shù)
static int[] getArr() {
//初始化數(shù)組
int[] numArr = new int[5];
//隨機(jī)1000-9999數(shù)字放到數(shù)組中
//調(diào)用test02的rand方法
int index = 0;
boolean tag = false;
//如果數(shù)組的下標(biāo)為4的元素是0,說明數(shù)組沒有裝滿,可以繼續(xù)執(zhí)行
while (numArr[4] == 0) {
tag = false;
int num = Test02.rand(1000, 9999);
//循環(huán)判斷,每次生成的隨機(jī)數(shù)不與之前放進(jìn)數(shù)組中的數(shù)重復(fù)
for (int i = 0; i < index; i++) {
//如果重復(fù),tag改為true,并且跳出本次循環(huán),
if (num == numArr[i]) {
tag = true;
break;
}
}
//如果tag = true,返回繼續(xù)執(zhí)行,不走下邊的代碼
if (tag) {
continue;
}
//如果不為true,則把隨機(jī)數(shù)放到數(shù)組中.
numArr[index] = num;
index++;
}
return numArr;
}
}