这里我有代码来打印来自给定数组的非重复数字。我知道这个概念但是在应用逻辑时我无法得到准确的输出。
public class NumberFinder {
public static void main(String[] args) {
int count = 0;
int[] input = {10, 2, 4, 2, 5, 1, 23, 34, 12};
int[] output = new int[input.length];
for (int i = 0; i < input.length; i++) {
for (int j = 1; j < input.length; j++) {
if (input[i] == input[j]) {
count++;
} else {
output[j - 1] = input[i];
System.out.println(input[j]);
}
}
}
}
}
从上面的数组我需要打印非重复值如下:10,4,5,1,23,34,12。
任何人都可以指导我。您的帮助将不胜感激。
编辑 - 阿尔玛斯 - 这个问题与Suresh标记的内容并不重复。
这是你能做的: 你可以使用Map并保持重复的次数:
int[] input = new int[] { 1, 1, 3, 7, 7, 8, 9, 9, 9, 10 };
boolean found;
for (int i = 0; i < input.length; i++) {
found = false;
for (int j = 0; j < input.length; j++) {
if (i == j)
continue;
if (input[i] == input[j]) {
found = true;
break;
}
}
if (!found) {
System.out.println(input[i]);
}
}
你也可以试试这段代码:
public static void main(String[] args)
{
int[] input = { 3,10,7, 10, 2, 4, 2, 5, 1, 23, 34, 5, 12, 4, 63,63,111 };
int duplicateNumber[] = new int[input.length];
int k = 0;
for (int i = 0; i < input.length; i++)
{
boolean alreadyDuplicated = false;
for (int l = 0; l < k; l++)
{
if (input[i] == input[duplicateNumber[l]])
{
alreadyDuplicated = true;
break;
}
}
if (!alreadyDuplicated)
{
boolean insertFirst = false;
for (int j = i + 1; j < input.length; j++)
{
if (input[i] == input[j])
{
if (insertFirst == false)
{
duplicateNumber[k++] = i;
insertFirst = true;
}
duplicateNumber[k++] = j;
}
}
}
}
int[] output = new int[input.length - k];
int out = 0;
for (int i = 0; i < input.length; i++)
{
boolean duplicatedFound = false;
for(int j = 0;j<k;j++)
{
if(input[i] == input[duplicateNumber[j]])
{
duplicatedFound = true;
}
}
if(!duplicatedFound)
{
output[out++] = input[i];
}
}
for (int l = 0; l < output.length; l++)
{
System.out.println(output[l]);
}
}