簡體   English   中英

檢查數組列表中的先前輸入

[英]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>();

現在回到您的問題,有兩種選擇:

  1. 不要使用List Set ,因為它可以避免重復,因此可以確保具有唯一值(推薦)

  2. 每次輸入執行后

     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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM