Java,如果数组包含重复值,则返回 true

标签 java arrays sorting boolean jgrasp

如果给定的名为 x 的数组(由用户在另一个方法中输入)包含重复值,我试图让一个方法(重复)返回 true。否则会返回 false。它不会检查整个数组(初始化为 100),而是仅检查输入的值的数量,该数量由全局计数器 numElementsInX 进行跟踪。

实现这一目标的最佳方法是什么?

public static boolean duplicates (int [] x)

我提示输入用户数据,如下所示:

public static void readData (int [] x, int i){

    Scanner input = new Scanner(System.in);
    System.out.println("Please enter integers, enter -999 to stop");

    while (i <= 99) {
        int temp = input.nextInt();
            if(temp == -999){
                break;
            }
            else {
                x[i++]=temp;
            }

    // else

}//end while
        printArray(x,i);


}//end readData

public static void printArray(int [] x, int numElementsInX){

int n = numElementsInX;

for (int i = 0; i < n; i++){
    System.out.print(x[i] + " ");


}//end for
        System.out.println();
}//end printArray

我确信有更好的方法来做到这一点,但这就是迄今为止我所学到的。

最佳答案

这是一个解决方案:

  • 编译并执行,不会抛出异常。
  • 按照您的要求使用numElementsInX
  • 发现重复项后立即返回。

此方法测试数组的每个成员之前是否已见过。如果有,该方法可以立即返回。如果没有,则将该成员添加到之前看到的集合中。

public static boolean duplicates (int [] x, int numElementsInX ) {
    Set<Integer> set = new HashSet<Integer>();
    for ( int i = 0; i < numElementsInX; ++i ) {
        if ( set.contains( x[i])) {
            return true;
        }
        else {
            set.add(x[i]);
        }
    }
    return false;
}

这是一个sample program containing the above code .

关于Java,如果数组包含重复值,则返回 true,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17795449/

相关文章:

java - 如何通过应用程序关闭所有 postgres 连接

java - JOptionPane 数组条件

c - c90 程序中的 exc_bad_access(code=1 address=0x68)

javascript - 一次对多列进行排序

javascript - 如何对这样格式的数组进行排序?

没有用逗号分隔的 Java JPA Left Join

java - 使用流避免临时文件

Java TextArea 挤占 Button

javascript - 无法通过 REST 客户端发送数组中的多个对象(Insomnia)

algorithm - 数组合并排序复杂度计算