[英]Checking previous input in an arraylist
我想知道如何檢查以前存儲在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
}
如果您不希望重復,那么我建議您使用HashSet
。 要查看以前是否已做出猜測,只需調用contains()方法。
if (!guesses.contains(userInput)) {
guesses.add(userInput);
} else {
...
}
首先,作為一種好習慣,您應該始終對接口進行編碼,從而:
ArrayList<String>guesses=new ArrayList<String>();
應該更改為:
List<String>guesses=new ArrayList<String>();
現在回到您的問題,有兩種選擇:
不要使用List
Set
,因為它可以避免重復,因此可以確保具有唯一值(推薦)
每次輸入執行后
if (!guesses.contains(userInput)) guesses.add(userInput); else // if you want you can intimate the user of a duplicate value
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.