您的位置:首页 > 编程语言 > Java开发

记录我的Java学习经历(7)

2017-10-14 22:47 134 查看
介绍

学习Java基础时做的小练习分享,请大家批评指正!

数组的综合小练习

接下来这道题在基础中综合性比较高,需要进行的判断比较多,主要是用户名是否重复的判断比较繁琐,规则:

现在名额是3个,判定:如果名额满了,则提示禁止注册。用户名禁止重复。主界面有注册登录和退出功能,用户注册时需要登记生日和爱好,还有呢登录成功则提示:登录成功并打印该用户所有信息。

PS:我只是初学哈,代码不够精简,欢迎大家批评指正交流~

代码:

public class MainApp {
public static void main(String[] args) {
@SuppressWarnings("resource")
Scanner sc = new Scanner(System.in);
String[][] str = new String[3][4];//二维数组,二维为三个用户,一维用于储存用户的所有信息
for (int i = 0; i < str.length; i++) {
str[i][0] = "null";//先把所有二维数组的第一个元素定义为null,用于判断是否名额已满
}
while(true) {
System.out.println("请选择功能:");
System.out.println("1.注册");
System.out.println("2.登录");
System.out.println("3.退出");
int choose = sc.nextInt();
switch (choose) {
case 1:
registe(str);
break;
case 2:
login(str);
break;
case 3:
System.exit(0);
default:
break;
}
}
}
//注册功能
public static void registe(String[][] str){
@SuppressWarnings("resource")
Scanner sc = new Scanner(System.in);
//用户名注册:
boolean f = true;
boolean b = true;
String account = "";
int count = 0;//记录是第几个用户名
label:while(f){
if (str[2][0].equals("null")) {//判断注册名额是否已满
System.out.println("请输入注册用户名:");
account = sc.nextLine();
for (int i = 0; i < str.length; i++) {//判断用户名是否已存在
if (str[i][0].equals(account)){
System.out.println("用户名已存在!请重新输入:");
continue label;
}
}
for (int i = 0; i < str.length; i++) {//注册用户名
if (str[i][0].equals("null")) {//判断此名额是否被占用
str[i][0] = account;//注册成功!
count = i;//记录是第几个用户名,用于对应密码设置
f = false;//结束掉整个while
break;
} else {
continue;//寻找下个空名额
}
}
} else {//名额已满
System.out.println("禁止注册!");
b = false;//不执行下面的设置密码
break;
}
}
if(b){//如果名额没满则执行
//设置密码:
System.out.println("请设置密码:");
String password = sc.nextLine();
str[count][1] = password;
//设置生日:
System.out.println("请填写生日:");
String birthdate = sc.nextLine();
str[count][2] = birthdate;
//填写爱好:
System.out.println("请填写爱好:");
String hobby = sc.nextLine();
str[count][3] = hobby;
}
}
//登录功能
public static void login(String[][] str){
@SuppressWarnings("resource")
Scanner sc = new Scanner(System.in);
System.out.println("请输入登录账号:");
String account = sc.nextLine();
System.out.println("请输入登录密码:");
String password = sc.nextLine();
int count = 0;//记录逐一比对
for (int i = 0; i < str.length; i++) {
if (str[i][0].equals(account) && str[i][1].equals(password)){
System.out.println("登录成功!");
System.out.println("账户名:"+str[i][0]);
System.out.println("密码:"+str[i][1]);
System.out.println("生日:"+str[i][2]);
System.out.println("爱好:"+str[i][3]);
break;
}
count++;
}
if(count == 3){//如果全都匹配不上,则计数器为3了,为3,则没有相应的用户名和密码,则错误!这里哈,应该有更高效的方法,但是可能我还没学到,想不出来
System.out.println("账户名或密码错误!");
}
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java