如何解决错误在哪里?我想添加从哈希表中删除项目的功能
我创建了一个哈希表并添加了添加新行的功能,但我也想添加删除我创建的行的功能,但遇到了错误。
package com.company;
import java.util.Hashtable;
import java.util.Scanner;
import java.util.*;
public class Main {
public static void main(String[] args) {
Hashtable<Integer,String> TennisClub = new Hashtable<Integer,String>();
TennisClub.put(1,"Bob");
TennisClub.put(2,"Aaron");
TennisClub.put(3,"John");
TennisClub.put(4,"Alex");
TennisClub.put(5,"Kevin");
for(Integer itm: TennisClub.keySet()){
System.out.println(itm + " " + TennisClub.get(itm));
}
String name = "";
String way;
int id = 0;
Scanner in = new Scanner(system.in);
System.out.println("What do you want to do?");
way = in.next();
if (way.equals("add")){
Scanner input = new Scanner(system.in);
while (true) {
System.out.println("Enter name:");
name = in.next();
if (name.equals("end")) {
break;
}
System.out.println("Enter id:");
id = Integer.valueOf(in.next());
TennisClub.put(id,name);
}
System.out.println("\nHashtable:");
for(Integer n : TennisClub.keySet()) {
System.out.println("id:" + n + "\nName:" + TennisClub.get(n));
}
}
if (way.equals("remove")) {
Scanner input = new Scanner(system.in);
while (true) {
System.out.println("Enter name:");
name = in.next();
if (name.equals("end")) {
break;
}
TennisClub.remove(id,name);
}
System.out.println("\nHashtable:");
for (Integer n : TennisClub.keySet()) {
System.out.println("id:" + n + "\nName:" + TennisClub.get(n));
}
}
else{
return;
}
}
}
我创建了一个哈希表并添加了添加新行的功能,但我也想添加删除我创建的行的功能,但遇到了错误。
解决方法
在删除值的代码中,您没有获得输入名称的键。 id 变量的值是您的代码生成的最后一个值,而不是与名称关联的键。您需要先找到密钥,然后再删除。
public class Test {
public static void main(String[] args) {
Hashtable<Integer,String> TennisClub = new Hashtable<Integer,String>();
TennisClub.put(1,"Bob");
TennisClub.put(2,"Aaron");
TennisClub.put(3,"John");
TennisClub.put(4,"Alex");
TennisClub.put(5,"Kevin");
for(Integer itm: TennisClub.keySet()){
System.out.println(itm + " " + TennisClub.get(itm));
}
String name = "";
String way;
int id = 0;
Scanner in = new Scanner(System.in);
System.out.println("What do you want to do?");
way = in.next();
if (way.equals("add")){
while (true) {
System.out.println("Enter name:");
name = in.next();
if (name.equals("end")) {
break;
}
System.out.println("Enter id:");
id = Integer.valueOf(in.next());
TennisClub.put(id,name);
}
System.out.println("\nHashtable:");
for(Integer n : TennisClub.keySet()) {
System.out.println("id:" + n + "\nName:" + TennisClub.get(n));
}
}
if (way.equals("remove")) {
while (true) {
System.out.println("Enter name:");
name = in.next();
if (name.equals("end")) {
break;
}
// search for the id corresponding to input name.
for (Map.Entry<Integer,String> entry : TennisClub.entrySet()) {
if (entry.getValue().equals(name)) {
id = entry.getKey();
}
}
TennisClub.remove(id,name);
}
System.out.println("\nHashtable:");
for (Integer n : TennisClub.keySet()) {
System.out.println("id:" + n + "\nName:" + TennisClub.get(n));
}
}
else{
return;
}
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。