Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hashmaps密码锁java_Java - Fatal编程技术网

Hashmaps密码锁java

Hashmaps密码锁java,java,Java,我最近用java制作了一个密码锁,以测试我学习哈希映射的技能。这是我的代码: package com.Zach.Password; import java.util.HashMap; import java.util.Random; import java.util.Scanner; public class Password { public static void main(String[] args) { @SuppressWarnings("resource") S

我最近用java制作了一个密码锁,以测试我学习哈希映射的技能。这是我的代码:

package com.Zach.Password;

import java.util.HashMap;
import java.util.Random;
import java.util.Scanner;

public class Password 
{
public static void main(String[] args)
{
    @SuppressWarnings("resource")
    Scanner in = new Scanner(System.in);
    Random r = new Random();
    HashMap<String, String> names = new HashMap<String, String>();
    HashMap<String, Integer> passwords = new HashMap<String, Integer>();
    HashMap<String, Integer> randNums = new HashMap<String, Integer>();

    while(true)
    {
        System.out.println("Please enter your name!!");
        String name = in.nextLine();
        if(names.containsKey(name))
        {
            int tries = 2;
            while(tries != 0)
            {
                if(tries != 0)
                {
                    System.out.println("What is your password?");
                    int normPassword = in.nextInt();

                    if(normPassword == passwords.get(name))
                    {
                        System.out.println("Welcome, " + name);
                        System.out.println("This is your random number:\n");
                        break;
                    }
                    else
                        System.out.println("INCORRECT");
                }
                else if(tries == 0)
                {
                    System.out.println("This account is locked! Unlock it by entering your random number!!");
                    int lockedRand = in.nextInt();
                    if(lockedRand == randNums.get(name))
                    {
                        System.out.println("Welcome, " + name);
                        System.out.println("This is your random number:\n");
                        break;
                    }
                    else
                        System.out.println("INCORRECT");
                }
            }
        }
        else
        {
            int randNum = 1 + r.nextInt(99);
            randNums.put(name, randNum);
            names.put(name, name);
            System.out.println("Enter a password!!");
            int password = in.nextInt();
            passwords.put(name, password);
            System.out.println("Welcome, " + name);
            System.out.println("This is your random number:\n" + randNum);
        }
    }
}
package com.Zach.Password;
导入java.util.HashMap;
导入java.util.Random;
导入java.util.Scanner;
公共类密码
{
公共静态void main(字符串[]args)
{
@抑制警告(“资源”)
扫描仪输入=新扫描仪(系统输入);
随机r=新随机();
HashMap名称=新的HashMap();
HashMap passwords=新的HashMap();
HashMap randNums=新的HashMap();
while(true)
{
System.out.println(“请输入您的姓名!!”;
字符串名称=in.nextLine();
if(名称.容器(名称))
{
int=2;
while(尝试次数!=0)
{
如果(尝试次数!=0)
{
System.out.println(“您的密码是什么?”);
int normPassword=in.nextInt();
if(normPassword==passwords.get(name))
{
System.out.println(“欢迎,”+名称);
System.out.println(“这是您的随机数:\n”);
打破
}
其他的
系统输出打印项次(“不正确”);
}
else if(尝试==0)
{
System.out.println(“此帐户已锁定!通过输入您的随机数来解锁!!”;
int lockedRand=in.nextInt();
if(lockedRand==randNums.get(name))
{
System.out.println(“欢迎,”+名称);
System.out.println(“这是您的随机数:\n”);
打破
}
其他的
系统输出打印项次(“不正确”);
}
}
}
其他的
{
int randNum=1+r.nextInt(99);
randNums.put(名称,randNum);
姓名。填写(姓名、姓名);
System.out.println(“输入密码!!”);
int password=in.nextInt();
密码。输入(姓名、密码);
System.out.println(“欢迎,”+名称);
System.out.println(“这是您的随机数:\n”+randNum);
}
}
}
}


我不确定问题出在哪里,但无论何时输入名称,它都会转到else语句,以确定名称是否包含键。。。我不会停止程序并重新运行。。。它只是不在下面。

您必须使用.nextLine()中的
替换为.next()中的
用于扫描名称。.next()中的
阻止应用程序,直到提交用户输入。.nextLine()中的
只提供当前行的其余部分并更改位置。因此,如果用户没有输入,它只返回空字符串。

哪个“else”语句?你有几个:)可能是@Solver的副本它们被填充在
else
子句中。没有注意到我有多个,我忘了说明哪一个…谢谢大家的帮助!!我最终让它工作了!!