首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从用户给出的字符串中查重

如何从用户给出的字符串中查重
EN

Stack Overflow用户
提问于 2015-06-25 16:35:37
回答 6查看 906关注 0票数 2

我正在写一个检查重复的代码,这是由用户键入的。当用户输入第二个副本时,程序将停止并警告用户该副本。我的逻辑是,我将把给定的单词放到ArrayList中,然后检查当前ArrayList中的下一个给定单词是否已经存在。

代码语言:javascript
复制
public class RecurringWord {
    public static void main(String[] args) {
        Scanner reader = new Scanner(System.in);

        ArrayList<String> words = new ArrayList<String>();
        while (true) {
            System.out.println("Type a word: ");
            String word = reader.nextLine();
            words.add(word);
            int i = 0;
            if (words.contains(words.get(i+1))) {
                System.out.println("You gave the word " + words.get(i+1) + " twice");
            }
            i++;
            break;
        }
    }
}
EN

回答 6

Stack Overflow用户

发布于 2015-06-25 16:42:13

您需要进行一些重新组织和逻辑检查。如果你想在用户尝试添加同一个词两次时停止,然后停止并且根本不将它添加到列表中,那么你就不需要保留任何索引了。

代码语言:javascript
复制
while (true) {
    System.out.println("Type a word: ");
    String word = reader.nextLine();
    if (words.contains(word)) {
       System.out.println("You gave the word " + word + " twice");
       break;
      }
    words.add(word);  
 }
票数 0
EN

Stack Overflow用户

发布于 2015-06-25 16:42:56

尝试下面列出的内容

代码语言:javascript
复制
  ArrayList<String> words = new ArrayList<String>();
   while (true) {
    System.out.println("Type a word: ");
    String word = reader.nextLine();

    if (words.contains(word)) {
        System.out.println("You gave the word " + words.get(i+1) + " twice");
    }else{
       words.add(word);

    break;
}
票数 0
EN

Stack Overflow用户

发布于 2015-06-25 16:43:01

首先。对于您的需求,不需要使用迭代器i。其他请参阅评论:

代码语言:javascript
复制
Scanner reader = new Scanner(System.in);

Set<String> words = new HashSet<>();
while (true) {
    System.out.println("Type a word: ");
    String word = reader.nextLine();
    if (words.contains(word)) {
        System.out.println("You gave the word " + words + " twice");
        break; // end the programm if the word exists twice
    }
    words.add(word); // add the new word after the check.
}

在您的示例中,用户只能输入一个单词,在此之后程序员结束。

代码语言:javascript
复制
words.get(i+1)

将导致Exception,因为该元素永远不会存在。从元素0开始,而不是从1开始。

此外,我建议您使用一个集合,如果它是一个无效的大小写,同一个词有两次:

代码语言:javascript
复制
Set<String> words = new HashSet<>();

Set永远不会包含两个相等的字符串。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31045165

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档