当前位置: 首页 > 知识库问答 >
问题:

用户通过搜索重复项将数字输入列表

文寒
2023-03-14

该代码基于用户输入的列表。然后显示列表并要求输入y/n。如果是,它会显示回车,并允许您输入用逗号分隔的数字。这很好。

然而,在当循环之后,它会启动我还不明白的collections.frequency。只有当数字像12一样一个接一个地输入时,它才起作用,然后点击输入更多的数字,直到按下n。这打破了循环。并显示重复的列表。

然而,如果一次将所有数字输入到一行中,如12、23、55等,则不起作用。它不会找到或显示重复项。只有清单上的内容。我发现一次输入一个数字非常麻烦。有人能帮我更改代码吗?这样我就可以一次输入所有数字,然后按enter键,仍然可以搜索重复的代码,并在最后显示重复的代码。

package Input_Array_From_User;
import java.util.*;
public class Input_Array {

public static void main(String[] args) {
    // TODO Auto-generated method stub
    List<String> list = new ArrayList<String>();
    Scanner stdin = new Scanner(System.in);
    do {
        System.out.println("Current list is " + list);
        System.out.println("Add more? (y/n)");
        if (stdin.next().startsWith("y")) {
            System.out.println("Enter : ");
            list.add(stdin.next());
        } else {
            break;
        }
    } while (true);
    System.out.println("\nExample 2 - Count all with frequency");
    Set<String> uniqueSet = new HashSet<String>(list);
    for (String temp : uniqueSet) {
        System.out.println(temp + " shows that many times : " + Collections.frequency(list, temp));
    }
}

共有1个答案

须巴英
2023-03-14

您可以一次添加所有数字,用空格分隔,完成后点击回车键:

1 2 3 4 5

不过,要做到这一点,你必须停止询问用户是否希望在每次迭代中添加更多内容。要知道何时停止,可以要求用户在开始循环之前通知他们要输入的元素数量,并在达到该数量时停止循环。

代码如下所示:

public static void main(String[] args) {
    List<String> list = new ArrayList<String>();
    Scanner stdin = new Scanner(System.in);
    int n = stdin.nextInt();
    for (int i = 0; i < n; i++) {
        list.add(stdin.next());
    }
    System.out.println("\nExample 2 - Count all with frequency");
    Set<String> uniqueSet = new HashSet<String>(list);
    for (String temp : uniqueSet) {
        System.out.println(temp + " shows that many times : " + Collections.frequency(list, temp));
    }
}

输入的一个例子是:

5
1 2 2 4 5

相应的输出是:

Example 2 - Count all with frequency
1 shows that many times : 1
2 shows that many times : 2
4 shows that many times : 1
5 shows that many times : 1

如果您想使用自定义分隔符,例如,请检查Scanner中的useDimiter()方法。

 类似资料:
  • 问题内容: 我正在尝试找出如何创建输入验证的方法,在该方法中,您不能两次输入相同的数字,而且不能在数字范围内输入,除非它是整数,否则无法输入任何内容。我目前正在创建彩票程序,不确定如何执行此操作。任何帮助将非常感激。我的数字范围验证有效,而其他两个验证无效。我尝试了非重复号码验证,但我不确定如何执行仅数字验证。有人可以告诉我如何构建此结构。 此方法在我的Player类中 问题答案: 如下进行: 运

  • 任务是“编写一个程序,为用户输入的整数显示用户指示的倍数。” 我想我不需要一个完全直接的答案(尽管我确实想知道要使用的方法/公式),因为我想把这个作为一个学习经验,以便自己完成任务并从中学习。我真的想知道的过程和使用的方法,以及找到一个公式。: 我真的不确定如何编写一个代码,显示一个用户输入的整数的用户输入的数字。最难的部分似乎是编写循环公式。不知道从哪里开始。 到目前为止,我已经: 我真的不确定

  • 问题内容: 这个问题已经在这里有了答案 : MySQL查询以逗号分隔的字符串查找值 (11个答案) 2年前关闭。 我有一个MySQL字段,该字段引用另一个表,其中id保存为逗号分隔列表,例如: 代表另一个表中的值。我知道这是很不好的做法,但是错了,但这来自上面,我对此无能为力。现在的问题是,我想使用以下查询在该字段中进行搜索: 现在的问题显然是在此示例查询中几乎可以找到所有条目,因为最常见的ID在

  • 首先要说的是,我对stackoverflow中的“提问”还不熟悉,所以如果我的问题不属于正确的类别,或者已经有人问过类似的问题,我表示歉意。我试图找到一个相关的问题,但我找不到。我的有点特别,这将作为我将来编程的一个例子。 我尝试创建的简单程序的流程是: > 起始编号为的,例如0 该数字递增1,直到该数字增加到100个数字,此时... 程序询问"Y/N"是否是,然后重复步骤1和2(每次重复这个过程

  • 问题内容: 我试图用来获取数字列表,但是带有代码 输入给出的结果为,因此我想它会将输入解释为字符串。有什么直接方法可以列出清单吗?也许我可以用来提取整数,但如果可能的话,我宁愿使用更的解决方案。 问题答案: 在Python 3.x中,使用它。 例