java - 如何检查重复的数字并按照读取的相同顺序打印出读取的输入数字(不包括所有重复项。)

标签 java arrays algorithm user-input

我正在尝试编写代码。在那里我将从用户那里获得最多 1000 个(整数)输入(它必须是数组[1000])并且它会按照写入时的相同顺序打印出整数。

如果用户需要,可以通过 ctrl+z 停止阅读。该程序不会写出重复的数字。

例子;

输入:45 77 -22 3 45 0 21 -1 3 输出:45 77 -22 3 0 21 -1

到目前为止我已经编码(2 天内):

static int i = 0;
public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    int[] array = new int[1000];
    int[] arrayCopy = new int[1000];

    int k=0,j=0;

    System.out.println("enter your integer numbers");
    while(input.hasNext())
    {
        array[i] = input.nextInt();


        for(j =0 ; j< array.length; j++)
        {
            arrayCopy[j] = array[j];

        }


        for( k =1; k<arrayCopy.length; k++)
        {
            int aV = arrayCopy[k];

        }
        i++;

    }

    input.close();
    }
}

最佳答案

使用 HashMap 来跟踪已经看到的数字。如果它是一个新数字,则仅将其添加到您的输出字符串中。您可以使用以下内容修改您的代码:

int[] array = new int[1000];
Scanner input = new Scanner(System.in);
int index = 0;
while(input.hasNext()) {
    array[index] = input.nextInt();
    index++;
}

HashMap<Integer, Boolean> seenNumbers = new HashMap<Integer, Boolean>();
String result = "";
for (int i = 0; i < index; i++) {
    int value = array[i];
    if (!seenNumbers.containsKey(value)) {
        result += " " + value;
        seenNumbers.put(value, true);
    }
}

System.out.println(result);

关于java - 如何检查重复的数字并按照读取的相同顺序打印出读取的输入数字(不包括所有重复项。),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37147390/

相关文章:

C 指针和数组/'sizeof' 运算符

java - 当其他线程正在执行该类的静态同步方法时,一个线程能否获取该类实例的锁?

c - 遍历数组 MASM 中的元素并对其求平均值

java - 使用 for 循环在 jTextFields 中设置值

java - 什么是计算所有值的总和超过 double 限制的平均值的好解决方案?

java - 计算达到分数的方法数量

java - 如何在Java中使用正则表达式解析文本文件并将结果写入另一个文件

java - 碰撞检测矩阵-快速阵列移除和添加

java - URI 方案定义?

c# - 不同数字的组合及其关系