该循环发生故障。
我尝试用“等于”代替“包含”
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;
}
}
}
即使我输入上述用户名作为答案,它也不会登录。应该接受那些用户名作为正确答案并停止循环。但是,一切似乎都被认为是错误的答案。
答案 0 :(得分:1)
主要问题在于您if-else
的{{1}}声明中
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;
}
}
答案 1 :(得分:1)
主要问题是在if-else语句中,我刚刚添加了break语句,因为当您找到匹配的名称时,您将继续循环,如果下一个名称不匹配,则在需要时将login的值设置为false要在找到要添加的匹配项时立即停止循环,因此应将contains更改为equals方法,因为如果键入例如“ jo”,则在使用contains时可以登录为“ john”
public static void main(String[] args) {
// TODO code application logic here
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.equals(users.get(i).getUserName() ) )
{
loginUser=users.get(i);
login=true;
break;
}
else
{
login=false;
}
}