我正在编写一个包含4个用户名和4个密码的程序。如果用户使用正确的密码输入正确的名称,则输出" Welcome!"。它只提供2次尝试。这就是我写的,但是当我运行这段代码时,它并没有结束。它不断要求用户名不停。有人可以帮助我,指导我做错了什么,或者我错过了什么?谢谢。
public class password
{
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
int limit = 2;
int count = 0;
String[] user = {"Diana","Jasmin","Jimmy","Ross"};
String[] passwords = {"Flower01","Cheer02","Reading03","Math04"};
while (true)
{
System.out.print("Enter Username: ");
String [] name = input.nextLine();
if(user.equals(name))
{
while (count < user.length)
{
System.out.print("Enter password: ");
String [] word = input.nextLine();
if (word.equals(passwords))
{
System.out.println("Welcome!");
}
else
{
System.out.print("Sorry can not be found");
count++;
}
}
}
}
}
}
答案 0 :(得分:2)
while(true) {...}
是一个永无止境的循环,你应该把条件放在真实的地方。 例如,你可以为第一个循环添加第二个计数(这里你想要4个)。
String [] name = input.nextLine();
此行不应编译,因为您要为数组指定字符串。
答案 1 :(得分:1)
以下是您的代码的简单切割。几件事
Array
,这在输入时确实会失败。Println
在打印后获取新行。import java.util.Scanner;
public class Password
{
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
int limit = 2;
int count = 0;
String[] user = {"Diana","Jasmin","Jimmy","Ross"};
String[] passwords = {"Flower01","Cheer02","Reading03","Math04"};
while (count <4)
{
System.out.print("Enter Username: ");
String name = input.nextLine();
if(user.equals(name))
{
while (count < user.length)
{
System.out.print("Enter password: ");
String word = input.nextLine();
if (word.equals(passwords))
{
System.out.println("Welcome!");
}
else
{
System.out.println("Sorry can not be found");
count++;
}
}
}
else
{
System.out.println("Sorry can not be found");
count++;
}
}
}
}
答案 2 :(得分:0)
您的代码中有while true
。您可能想要做的是用计数和限制条件替换while true
。您的大部分代码已经到位,您只需要替换while true。
我也不确定你为什么会有第二个循环,它会迭代用户。我认为你最好做的是用一个简单的HashMap替换2个数组,如下所示:
Map users = new HashMap();
users.put("name1", "password1");
users.put("name2", "password2");
users.put("name3", "password3");
users.put("name4", "password4");
然后,根据用户名,您可以users.get(username)
获取密码。然后,将密码与用户键入的密码进行比较。如果它是正确的,请说欢迎,如果它不正确,说错误,并递增计数器。然后,如果计数器大于最大值,则停止程序。希望有所帮助!