我在命令行上使用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();
但尝试将其打印出来时无效。 任何人都可以给我一些提示吗?
答案 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);
}