java - 为什么我不能登录?
问题描述
循环出现故障。
我试过用“等于”替换“包含”
import java.util.*;
public class Main {
public static void main(String args[]) {
Scanner scan = new Scanner(System.in);
User cg = new User("Clarke ","griffinc@gmail.com");
User bb = new User("Bellamy ","blakeb@gmail.com");
User ob = new User("Octavia ","blakeo@gmail.com");
User rr = new User("Raven","reyesr@gmail.com");
User jm = new User("John","murphyj@gmail.com");
User mg = new User("Monty","greenm@gmail.com");
ArrayList <User> users = new ArrayList<User>();
users.add(cg);
users.add(bb);
users.add(ob);
users.add(rr);
users.add(jm);
users.add(mg);
//login
boolean login = false;
User loginUser = new User(" "," ");
while (login == false) {
for (int j = 0; j < users.size(); j++) {
System.out.println(j+1 +":"+ users.get(j).getUsername());
}
System.out.println("Give your username:");
String username = scan.next();
for (int i = 0; i < users.size(); i++) {
if (username.contains(users.get(i).getUsername())) {
loginUser = users.get(i);
login = true;
} else {
login = false;
}
}
}
即使我将上述用户名作为答案,它也不会登录。它应该接受这些用户名作为正确答案并停止循环。然而,一切似乎都被认为是错误的答案。
解决方案
主要问题在于你if-else
对你的陈述for-loop
for (int i = 0; i < users.size(); i++) {
if (username.contains(users.get(i).getUsername())) {
loginUser = users.get(i);
login = true;
} else {
login = false;
}
}
在这里,除非您输入Monty
,否则login
将始终为false
,因为它会在名称不匹配时重置。最好将其设置在循环之外,并且仅在需要时更改它,例如...
login = false;
for (int i = 0; i < users.size(); i++) {
if (username.contains(users.get(i).getUsername())) {
loginUser = users.get(i);
login = true;
}
}
另外,请注意,您的某些用户名末尾有空格...
User cg = new User("Clarke ","griffinc@gmail.com");
// ^--- This will screw with you
推荐阅读
- android - Android:如何使用 Firebase 正确获取数据?
- java - Spring rest JPA 在创建 json 时需要忽略延迟初始化
- azure - 无法从 VS Code Azure 函数连接到 CosmosDB
- amazon-web-services - 在 Elastic beanstalk 和 EC2 上部署 ebextensions
- spring-batch - Spring Batch 步骤/作业依赖
- scala - 未找到 SQL Server 依赖项
- c++ - c ++ string::size中的CharT元素是什么?
- join - 在数据集上使用什么是正确的连接?
- php - 使用 Curl 调用 Slim CORS Web 服务
- c# - 将 varchar 数据类型转换为 datetime 数据类型导致 c# 中的值超出范围