Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.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
Java 无法检索在hashmap中添加的值_Java_Hashmap - Fatal编程技术网

Java 无法检索在hashmap中添加的值

Java 无法检索在hashmap中添加的值,java,hashmap,Java,Hashmap,当我第二次尝试检索数据时,此代码没有提供数据 我输入域名和ip地址 我再次输入DN和Ip 我搜索第一个ip,它给出正确的结果 当我搜索第二个ip时,它说找不到域名 我不确定为什么我的循环没有给出正确的结果? 我可以看到数据是可用的,它进入if部分验证但不返回数据,它进入else部分并打印没有可用数据 //Main class { System.out.println("1. Add DNS details"); System.out.println(&q

当我第二次尝试检索数据时,此代码没有提供数据

  • 我输入域名和ip地址
  • 我再次输入DN和Ip
  • 我搜索第一个ip,它给出正确的结果
  • 当我搜索第二个ip时,它说找不到域名
  • 我不确定为什么我的循环没有给出正确的结果? 我可以看到数据是可用的,它进入if部分验证但不返回数据,它进入else部分并打印没有可用数据

     //Main class
    {
         System.out.println("1. Add DNS details");
         System.out.println("2. Find matching Domain Name");
         System.out.println("3. Exit");
         System.out.println("Enter your choice");
    
        //After entering the choice 
        System.out.println("Enter the IP address to find the domain name");
        ip = sc.nextLine();
        DomainName = dBO.findDomainName(ip);
    }
    
        //FindDomainname.java class
        public String findDomainName(String ipAddress) {
            
          String domain=null;
            
            if(domainMap.isEmpty()){
            return domain;
            }
            else
            for (Map.Entry<String, String> entry : domainMap.entrySet()) {
                String k = entry.getKey();
                String v = entry.getValue(); 
                
                if (ipAddress.equals(v)) {
                    domain = k;                 
                }
                else
                {
                    domain = "No matching domain name found";
                    
                }
         }    
        
        return domain;
    }
    
    //主类
    {
    System.out.println(“1.添加DNS详细信息”);
    System.out.println(“2.查找匹配的域名”);
    System.out.println(“3.Exit”);
    System.out.println(“输入您的选择”);
    //输入选项后
    System.out.println(“输入IP地址以查找域名”);
    ip=sc.nextLine();
    DomainName=dBO.findDomainName(ip);
    }
    //FindDomainname.java类
    公共字符串findDomainName(字符串ipAddress){
    字符串域=null;
    if(domainMap.isEmpty()){
    返回域;
    }
    其他的
    对于(Map.Entry:domainMap.entrySet()){
    字符串k=entry.getKey();
    字符串v=entry.getValue();
    if(IP地址等于(v)){
    域=k;
    }
    其他的
    {
    domain=“未找到匹配的域名”;
    }
    }    
    返回域;
    }
    
    您需要在找到条目后立即跳出for循环,否则它将在地图中的下一个条目上移动,并且该条目可能不匹配。添加break语句,如下所示:

    if (ipAddress.equals(v)) {                
        domain = k;  
        break;               
    }
    

    您需要在找到条目后立即跳出for循环,否则它将在地图中的下一个条目上移动,并且该条目可能不匹配。添加break语句,如下所示:

    if (ipAddress.equals(v)) {                
        domain = k;  
        break;               
    }
    

    流式解决方案。当找到匹配项时,您的错误没有跳出循环

    public String findDomainName(String ipAddress) {
        return domainMap.entrySet().stream()
            .filter(entry -> entry.getValue().equals(ipAddress))
            .findAny().orElse(domainMap.isEmpty() ? null
                              : "No matching domain name found");
    }    
    

    流式解决方案。当找到匹配项时,您的错误没有跳出循环

    public String findDomainName(String ipAddress) {
        return domainMap.entrySet().stream()
            .filter(entry -> entry.getValue().equals(ipAddress))
            .findAny().orElse(domainMap.isEmpty() ? null
                              : "No matching domain name found");
    }    
    

    在调用
    sc.nextLine()
    之前,您是否有任何
    nexttint()
    nextDouble()
    等?您不需要明确检查映射是否为空。循环对空映射的作用与显式检查相同。在调用
    sc.nextLine()
    之前,是否有任何
    nextInt()
    nextDouble()
    等?无需显式检查映射是否为空。循环对空映射执行与显式检查相同的操作。