import java.io.InputStream;
import java.net.PasswordAuthentication;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Scanner;
/*第一步: 提示用户选择功能, A(注册) B(登陆) 。 要求: 功能选择 的时候要忽略大小写。
注册:
1. 提示用户输入注册的账号(数字)与密码,如果输入的id号已经存在集合中,提示用户重新输入。
注册完毕之后,把集合中的所有用户信息打印出来。(使用:toArrry()方法)
登陆:
提示用户输入登陆的账号与密码,如果账号与密码这个用户已经存在集合中,那么登陆成功,否则登陆失败。
*
*
*
*
*/
class User{//创建一个用户类
int name;
String password;
public User(int name,String password){
this.name=name;
this.password=password;
}
}
class Registered extends User implements Runnable//创建一个注册类
{
public Registered(int name, String password) {
super(name, password);
// TODO Auto-generated constructor stub
}
User user=new User(00000,"lzk147258");
@Override
public String toString() {
// TODO Auto-generated method stub
return "[ 账号 "+this.name+" 密码 " +this.password+" ]";
}
@Override
public boolean equals(Object obj){
Registered p=(Registered) obj;
return this.name==p.name;
};
@Override
public void run() {//多线程实现方法
// TODO Auto-generated method stub
}
}
class loagin extends User implements Runnable{
public loagin(int name, String password) {//构造方法
super(name, password);
// TODO Auto-generated constructor stub
}
// TODO Auto-generated constructor stub
//创建一个登陆类
public String toString() {
// TODO Auto-generated method stub
return "[ 账号 "+this.name+" 密码 " +this.password+" ]";
}
@Override
public boolean equals(Object obj){
loagin p=((loagin) obj);
return this.name==p.name;
};
@Override
public void run() {
}//创建一个登陆类
}
public class demo8 {//创建一个主类
public static void main(String[] args) {
//while(true){事实证明位置不一样,效果就是不一样
String a; //用于接受输入流
Collection c=new ArrayList();
Collection c1=new ArrayList();
//Registered r=new Registered(1111,"sg");
//loagin l =new loagin(1111,"sg");
Scanner b= new Scanner(System.in);
while(true){//可以用if语句代替,更容易退出
//boolean flag=true;//设置一个布尔变量,判断while的循环条件
System.out.println("请选择功能,A(注册) B(登陆)。");
System.out.println("请输入:");
a=b.next();//请输入
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if(a.equals("A")|a.equals("B")){//判断是否需要重新输入
if(a.equals("A")){
System.out.println("欢迎使用 注册 功能!");
System.out.println("请输入账号:");
int name=b.nextInt();
System.out.println("请输入密码:");
String password=b.next();
Registered r=new Registered(name,password);
if(c.contains(r)){
System.out.println("这个账号已存在");
}else{
c.add(r);
System.out.println("注册成功!");
Object[] arr=c.toArray();
for(int i=0;i<arr.length;i++){
Registered p=(Registered) arr[i];
if(p.name==r.name){
System.out.println("当前用户名和密码是"+p);
}
}
}
}
else{
Registered l =new Registered(1111,"sg");
System.out.println("欢迎使用 登陆 功能!");
System.out.println("请输入账号:");
l.name=b.nextInt();
System.out.println("请输入密码:");
l.password=b.next();
c1.addAll(c);
if(c.contains(l)){
Object[] arr=c1.toArray();
for(int i=0;i<arr.length;i++){
Registered p=(Registered) arr[i];
if(p.password.equals(l.password)){//必须用equals,不知道为什么
System.out.println("登陆成功!");
}else{
System.out.println("密码错误");}
}
}else
System.out.println("账户名不存在!");
}}
else {
System.out.println("输入错误!请重新输入!");/*
Java中equals和==的区别
java中的数据类型,可分为两类:
1.基本数据类型,也称原始数据类型。byte,short,char,int,long,float,double,boolean
他们之间的比较,应用双等号(==),比较的是他们的值。
2.复合数据类型(类)
当他们用(==)进行比较的时候,比较的是他们在内存中的存放地址,所以,除非是同一个new出来的对象,
他们的比较后的结果为true,否则比较后结果为false。 JAVA当中所有的类都是继承于Object这个基类的,
在Object中的基类中定义了一个equals的方法,这个方法的初始行为是比较对象的内存地 址,但在一些类库当中这个方法被覆盖掉了,
如String,Integer,Date在这些类当中equals有其自身的实现,而不再是比较类在堆内存中的存放地址了。
*
*
*
*/
}
}
}//一个登陆注册类就能解决问题
}//简单的登陆注册 代码段能保存数据,但不能保证不同集合中元素互存。。
<img src="https://img-blog.csdn.net/20150731181723645?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />