我在Java编程方面很陌生,我想创建一个程序,从文件中打印出一些值。我想从包含大量重复数字的文件中导入数组列表。程序应该只打印一个唯一的数字集。
例如,数组包含以下数字:
0,0,0,0,2,2,2,2,2,3,3,3,3,3,5,5,5,5,8,8,10,10,2,2,2,3,3,7,7
我应该从中得到的是:
0,2,3,5,8,10,2,3,7
如果数组不包含整数,则需要相同的但是浮点数:
0.23, 0.23, 0.23, 0.23, 1.89, 1.89, 1.89, 1.89, 1.89, 2.56, 2.56, 2.56, 2.56, 2.56, 3.13, 3.13
输出应为:
0.23, 1.89, 2.56, 3.13
有没有人建议如何构建循环?
提前致谢
答案 0 :(得分:1)
似乎你想要防止不连续的重复。我首先将变量设置为数组中的第一个值,输出该值,然后迭代数组,直到遇到新的唯一值。我会输出一个逗号和新值(将其存储在值变量中),然后继续循环(直到我到达数组的末尾)。就是这样的 -
public static void main(String[] args) {
int[] arr = { 0, 0, 0, 0, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 5, 5, 5, 5, 8,
8, 10, 10, 2, 2, 2, 3, 3, 7, 7 };
int v = arr[0];
System.out.print(v);
for (int i = 1; i < arr.length; i++) {
if (arr[i] != v) {
v = arr[i];
System.out.printf(", %d", v);
}
}
System.out.println();
}
输出是请求的
0, 2, 3, 5, 8, 10, 2, 3, 7
答案 1 :(得分:1)
<强>代码强>:
int[] input = new int[]{0, 0, 0, 0, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 5, 5, 5, 5, 8, 8, 10, 10, 2, 2, 2, 3, 3, 7, 7};
int current = input[0];
boolean found = false;
for (int i = 1; i < input.length; i++) {
if (current == input[i] && !found) {
found = true;
} else if (current != input[i]) {
System.out.print(" " + current);
current = input[i];
found = false;
}
}
System.out.print(" " + current);
<强>输出强>:
0 2 3 5 8 10 2 3
<强>解释强>:
在您完成后,使用数组的第一个值设置当前值 loop.Inside循环,如果当前值等于每个元素 并且标志fount是false,表示没有看到副本 你现在已经看到了,所以发现变量的旗帜有 已设置为true,表示已找到或看到重复 没有。
对于else部分,如果数组元素不等于current 变量意味着没有重复,而右边是当前变量 包含之前在控制台看到的副本。更新 变量当前有新的重复和设置标志被发现为false 节目没见过新见过的重复。继续这样做,最后一次 完成遍历循环后重复变量。
答案 2 :(得分:0)
最简单的解决方案是创建临时的LinkedHashSet并将所有值放在那里。
import java.util.Arrays;
import java.util.LinkedHashSet;
import java.util.Set;
...
public static void main(String[] args) {
Set<Integer> temp = new LinkedHashSet<Integer>(Arrays.asList(0, 0, 0, 0, 2, 2, 2, 2, 2,
3, 3, 3, 3, 3, 5, 5, 5, 5, 8, 8, 10, 10, 2, 2, 2, 3, 3, 7, 7));
System.out.print(temp);
}
请注意号码&#34; 2&#34;应该只在列表中一次。请更正您的问题样本。