Java 如何生成随机响应
当我输入hi时,我试图在Hashset中显示一个响应,但是它显示Hashset中的所有项目。任何帮助都可以。谢谢,下面是我的代码Java 如何生成随机响应,java,hashmap,hashset,Java,Hashmap,Hashset,当我输入hi时,我试图在Hashset中显示一个响应,但是它显示Hashset中的所有项目。任何帮助都可以。谢谢,下面是我的代码 public class tst { public static void main(String[] args){ Scanner input=new Scanner(System.in); HashMap<String,HashSet> map = new HashMap<String, HashSet&
public class tst {
public static void main(String[] args){
Scanner input=new Scanner(System.in);
HashMap<String,HashSet> map = new HashMap<String, HashSet>();
HashSet<String>hs=new HashSet<String>();
Random r = new Random();
hs.add("How are you");
hs.add("Whats up");
hs.add("How Have You Been");
hs.add("Missed Me");
hs.add("ab");
hs.add("cd");
hs.add("Excuse me no no");
map.put("hi",hs);
System.out.println("enter Hi");
String str=input.next().toLowerCase().trim();
if(map.containsKey(str)){
System.out.println(map.get(str));
}
}
}
我更改了您的代码并使用了ArrayList而不是HashSet。我不知道在进一步的设计中是否需要哈希集,但使用ArrayList可以通过元素的索引检索元素,而且索引很容易随机获取:
public static void main(String args[]) {
Scanner input = new Scanner(System.in);
// the HashMap now needs to store Strings and ArrayLists
HashMap<String, ArrayList<String>> map = new HashMap<String, ArrayList<String>>();
// the ArrayList replaces your HashSet.
ArrayList<String> list = new ArrayList<String>(); // I called it list so you we can see the difference :)
Random r = new Random();
list.add("How are you");
list.add("Whats up");
list.add("How Have You Been");
list.add("Missed Me");
list.add("ab");
list.add("cd");
list.add("Excuse me no no");
map.put("hi", list);
System.out.println("enter Hi");
String str = input.next().toLowerCase().trim();
if (map.containsKey(str)) {
ArrayList<String> tmpList = map.get(str); // this is just make the step clear, that we now retrieve an ArrayList from the map
int randomNumber = r.nextInt(tmpList.size()) // a random number between 0 and tmpList.size()
System.out.println(tmpList.get(randomNumber)); // get the random response from the list
}
}
这是因为您正在打印map.getstr,这是整个集合。如果我需要单独打印一个,我缺少什么?为什么不使用ArrayList而不是HashSet,然后随机拉出一个字符串:map.getstr.getr.nextInMyArrayList.size。。像这样的?
enter Hi
Hi
How Have You Been