我想知道如何检查以前存储在arraylist中的用户输入。
例如,我要用户输入要存储到数组列表中的字母。我需要确保他们不会再猜到同一封信,但是我不确定怎么办。任何提示表示赞赏。
Scanner scan = new Scanner(System.in);
ArrayList<String>guesses=new ArrayList<String>();
System.out.println("Enter a letter");
String userInput = scan.next();
guesses.add(userInput);
最佳答案
该功能与HashSet一起使用会更好,因为在HashSet中搜索现有值比在ArrayList中搜索更快。
Scanner scan = new Scanner(System.in);
Set<String> guesses=new HashSet<String>();
System.out.println("Enter a letter");
String userInput = scan.next();
if (guesses.contains(userInput)) {
// the user repeated a guess
} else {
guesses.add(userInput);
}
当然,如果一次只接受一个字符,则可以使用一个简单的数组来查找是否重复猜测:
Scanner scan = new Scanner(System.in);
boolean[] guesses=new boolean[26];
System.out.println("Enter a letter");
String userInput = scan.next();
char c = userInput.charAt(0);
if (c >= 'a' && c <= 'z' && !guesses[c-'a']) {
guesses[c-'a']=true;
// this is a valid guess
} else {
// this is an invalid guess
}