用户在列表中输入数字,搜索重复项

时间:2015-03-25 00:02:24

标签: java

代码基于具有用户输入的List。然后它显示列表并询问输入y / n。如果是,则显示Enter,并允许您输入以逗号分隔的数字。哪个工作正常。

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

但是,如果数字一次全部输入一行,则不起作用:12,23,55,依此类推。它不会找到也不会显示重复项。只有列表中的内容。我发现一次输入一个号码非常麻烦。有人可以帮我改变代码,这样我就可以一次输入所有数字,然后按回车键,仍然可以搜索重复的代码,并在最后显示副本。

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 个答案:

答案 0 :(得分:0)

您可以一次性添加由空格分隔的数字,并在完成后按Enter键:

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

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