使用 Arraylist 在 Java 中创建登录系统
Create a login system in Java using Arraylist
我是一名初级开发人员,对于我的项目,我的目标是从登录开始。
我尝试在同一个功能上分别检查 ID 和密码,一个在另一个里面,就像我接下来要展示的那样
我有一个员工class:
public class Empleado{
private String id;
private String passwd;
public Empleado(String id, String passwd) {
this.id = id;
this.passwd = passwd;
}
}
这是我在 Main 上的进展:
String identificador;
boolean idCheck;
String contrasena;
boolean passCheck;
ArrayList<Empleado> misEmpleados = new ArrayList<>();
misEmpleados.add(new Empleado("EmpleadoA","passA"));
misEmpleados.add(new Empleado("EmpleadoB","passB"));
misEmpleados.add(new Empleado("EmpleadoC","passC"));
do{
System.out.print("Enter ID: ");
identificador = input.next();
idCheck = comprobarId(false, identificador, misEmpleados);
}while(!idCheck);
public boolean comprobarId(boolean check, String id, ArrayList<Empleado> recepcionistas){
String contrasena;
for (int i = 0; i < recepcionistas.size(); i++) {
if(recepcionistas.get(i).getId().equals(id)){
System.out.print("Introducir contraseña: ");
contrasena = input.next();
check = comprobarPass(id, contrasena, recepcionistas);
}
}
return check;
}
public boolean comprobarPass(String id, String pass, ArrayList<Empleado> recepcionistas){
for (int i = 0; i < recepcionistas.size(); i++) {
if(recepcionistas.get(i).getId().equals(pass)){
check = true;
}
}
return check;
}
希望有人能帮我一点...现在已经为此苦苦挣扎了 7 个小时。
请原谅我的英语和任何其他错误,这是我的第一个 post/question
在您的 comprobarPass
函数中,您将员工 ID 与密码而不是密码进行比较。我想你是想改变这个
if(recepcionistas.get(i).getId().equals(pass)){
check = true;
}
至此
Empleado e = recepcionistas.get(i);
if(e.getId().equals(id) && e.getPasswd().equals(pass)){
check = true;
}
这将在一个函数中检查 ID 和密码是否匹配,而不是单独检查 ID 和密码比较
你已经得到了输入id对应的Empleado
,只把这个Empleado
传递给comprobarPass
方法,而不是整个列表recepcionistas
.
在您的代码中,您试图通过在两种方法中循环来完成两次工作。
如果你只循环一次,找到empleado,你不需要再做一次,你可以使用empleado参考。
您的代码的另一个问题是 2 个变量 check
:您在方法 comprobarPass
中设置了变量 check
的值,但未声明此变量。另外,在 comprobarId
中,原始布尔值 check
变量作为参数传递,然后修改 returned。这种原始类型变量的用法是一种不好的做法。最好删除此参数和 return 局部变量。
经验法则:越简单越好!
public boolean comprobarId(String id, ArrayList<Empleado> recepcionistas){
String contrasena;
boolean check = false;
for (int i = 0; i < recepcionistas.size(); i++) {
if(recepcionistas.get(i).getId().equals(id)){
System.out.print("Introducir contraseña: ");
contrasena = input.next();
check = comprobarPass(contrasena, recepcionistas.get(i)); // pass the empleado, not the list
}
}
return check;
}
public boolean comprobarPass(String pass, Empleado recepcionista){
return recepcionista.getPasswd().equals(pass));
}
我是一名初级开发人员,对于我的项目,我的目标是从登录开始。
我尝试在同一个功能上分别检查 ID 和密码,一个在另一个里面,就像我接下来要展示的那样
我有一个员工class:
public class Empleado{
private String id;
private String passwd;
public Empleado(String id, String passwd) {
this.id = id;
this.passwd = passwd;
}
}
这是我在 Main 上的进展:
String identificador;
boolean idCheck;
String contrasena;
boolean passCheck;
ArrayList<Empleado> misEmpleados = new ArrayList<>();
misEmpleados.add(new Empleado("EmpleadoA","passA"));
misEmpleados.add(new Empleado("EmpleadoB","passB"));
misEmpleados.add(new Empleado("EmpleadoC","passC"));
do{
System.out.print("Enter ID: ");
identificador = input.next();
idCheck = comprobarId(false, identificador, misEmpleados);
}while(!idCheck);
public boolean comprobarId(boolean check, String id, ArrayList<Empleado> recepcionistas){
String contrasena;
for (int i = 0; i < recepcionistas.size(); i++) {
if(recepcionistas.get(i).getId().equals(id)){
System.out.print("Introducir contraseña: ");
contrasena = input.next();
check = comprobarPass(id, contrasena, recepcionistas);
}
}
return check;
}
public boolean comprobarPass(String id, String pass, ArrayList<Empleado> recepcionistas){
for (int i = 0; i < recepcionistas.size(); i++) {
if(recepcionistas.get(i).getId().equals(pass)){
check = true;
}
}
return check;
}
希望有人能帮我一点...现在已经为此苦苦挣扎了 7 个小时。
请原谅我的英语和任何其他错误,这是我的第一个 post/question
在您的 comprobarPass
函数中,您将员工 ID 与密码而不是密码进行比较。我想你是想改变这个
if(recepcionistas.get(i).getId().equals(pass)){
check = true;
}
至此
Empleado e = recepcionistas.get(i);
if(e.getId().equals(id) && e.getPasswd().equals(pass)){
check = true;
}
这将在一个函数中检查 ID 和密码是否匹配,而不是单独检查 ID 和密码比较
你已经得到了输入id对应的Empleado
,只把这个Empleado
传递给comprobarPass
方法,而不是整个列表recepcionistas
.
在您的代码中,您试图通过在两种方法中循环来完成两次工作。
如果你只循环一次,找到empleado,你不需要再做一次,你可以使用empleado参考。
您的代码的另一个问题是 2 个变量 check
:您在方法 comprobarPass
中设置了变量 check
的值,但未声明此变量。另外,在 comprobarId
中,原始布尔值 check
变量作为参数传递,然后修改 returned。这种原始类型变量的用法是一种不好的做法。最好删除此参数和 return 局部变量。
经验法则:越简单越好!
public boolean comprobarId(String id, ArrayList<Empleado> recepcionistas){
String contrasena;
boolean check = false;
for (int i = 0; i < recepcionistas.size(); i++) {
if(recepcionistas.get(i).getId().equals(id)){
System.out.print("Introducir contraseña: ");
contrasena = input.next();
check = comprobarPass(contrasena, recepcionistas.get(i)); // pass the empleado, not the list
}
}
return check;
}
public boolean comprobarPass(String pass, Empleado recepcionista){
return recepcionista.getPasswd().equals(pass));
}