无法检索哈希图中添加的值
Unable to retrieve the values added in the hashmap
当我第二次尝试检索数据时,这段代码没有给我数据。
- 我输入域名和ip地址
- 我再次输入 DN 和 Ip
- 我搜索 1st ip 它给出了正确的结果。
- 当我搜索第二个 ip 时,它说找不到域名
我不确定为什么我的循环没有给出正确的结果?
我可以看到数据可用它进入 if 部分已验证但没有 return 数据,它转到 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;
}
您需要在找到条目后立即跳出 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");
}
当我第二次尝试检索数据时,这段代码没有给我数据。
- 我输入域名和ip地址
- 我再次输入 DN 和 Ip
- 我搜索 1st ip 它给出了正确的结果。
- 当我搜索第二个 ip 时,它说找不到域名
我不确定为什么我的循环没有给出正确的结果? 我可以看到数据可用它进入 if 部分已验证但没有 return 数据,它转到 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;
}
您需要在找到条目后立即跳出 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");
}