如何从标准输入与Stdin读取整数序列?

时间:2017-11-15 16:31:06

标签: java stdin

我在命令行上使用java,我想编写一个可以过滤和删除整数序列重复项的程序,但首先我不知道如何使用StdIn来读取整数序列。

程序应该从标准输入读取值,直到它在StdIn的帮助下到达EOF序列。

命令行上的输入和输出示例:

$ echo 1 1 2 2 1 1 3 4 6 2 1 | java RemoveDuplicates
1 2 1 3 4 6 2 1

我试图将整数转换为数组

int[] n = StdIn.readAllInts();

但尝试将其打印出来时无效。 任何人都可以给我一些提示吗?

4 个答案:

答案 0 :(得分:0)

您应该可以使用普通扫描仪将其捕获为字符串:

Scanner in = new Scanner(System.in);
String line = in.nextLine();

有时第二行不适用于某些输入,因此您也可以尝试:

String line = in.next();

将数字作为整数得到你可以使用inputStream,但我不确定它是如何工作的。

答案 1 :(得分:0)

可能的解决方案可能是:

    int testNum;
    Set<Integer> set = new HashSet<Integer>();
    Scanner in = new Scanner(System.in);

    System.out.println("number of elements to be inserted");
    testNum = in.nextInt();




    //Add items
    for ( int i = 0; i<testNum; i++)
    {
          set.add(in.nextInt());
    }

    //Print all element
    Iterator it = set.iterator();     
    while(it.hasNext()){
           System.out.println(it.next());
    }

我希望能帮到你

答案 2 :(得分:0)

下面的示例程序,这将删除重复的条目,但仍保留订单。

Enter the sequence with spaces e.g. 1 3 5 3 1 1 3 5 
1 1 2 2 1 1 1 3 4 1 1 1 11 11 12 12 1 1 6 6 2 1 //sequence entered
1 2 3 4 11 12 6 // sample result

输出样本是:

{{1}}

答案 3 :(得分:0)

Stdin不需要。

致电

java RemoveDuplicates 1 1 2 2 1 1 3 4 6 2 1 

它将String[] args分配给所有这些值的数组。

如果要删除重复项,请将它们放在Set

public static void main(String[] args) {
    Set<String> uniq = new HashSet<>();
    for (String s : args) {
        uniq.add(s);
    }
    System.out.println(uniq);
}