【问题标题】:Java: How do I determine if an array has two equal elements? [duplicate]Java:如何确定一个数组是否有两个相等的元素? [复制]
【发布时间】:2016-11-11 17:04:17
【问题描述】:

我正在学习 Java 入门课程。我使用扫描仪输入创建了一个长度为 10 的数组。现在我需要编写一个程序来检查数组中的任何元素是否多次出现。非常感谢指导!

【问题讨论】:

  • 使用任何通用搜索算法。
  • 欢迎来到stackoverflow。请让我们知道您尝试了什么以及您遇到的问题。虽然这个问题很常见,但正确的谷歌搜索应该会给你所有的答案
  • 循环遍历数组的元素并将每个值与所有下一个值进行比较。回来尝试一些代码。
  • 这个问题目前无法回答,除非提问者告诉我们它是原始类型数组(您需要与 == 进行比较)还是字符串等对象(在这种情况下应该使用 equals )。

标签: java


【解决方案1】:

下面的代码应该可以做到。

import java.io.IOException;
import java.util.*;

public class test {
    public static void main(String [] args) throws IOException {

        Scanner scanner = new Scanner(System.in);

        int[] nums = new int[10];

        for (int i=0;i<10;i++) {
            nums[i] = scanner.nextInt();
        }

        System.out.println(findDuplicate(nums) ? "Duplicate found" : "No Duplicates");

    }

    public static boolean findDuplicate(int[] nums) {
        for (int i=0; i < 10; i++) {
            for (int j=0; j<10; j++) {
                if (i!=j && nums[i] == nums[j]) {
                    return true;
                }
            }
        }
        return false;
    }
}

【讨论】:

  • 如果数组是非原始类型,将不起作用,因为您必须使用 equals 而不是 ==。
【解决方案2】:

你可以像这样使用嵌套循环

 for(int i=0;i<array.length;i++)
  {

     for(int j=i+1;j<array.length;j++)
      {
           if(array[i].equals(array[j]))
               {
                   System.out.println("Duplicate found");
               }

       }
     }

【讨论】:

  • 如果数组是原始类型,则不会工作,因为原始类型没有等号。
  • 我这样做是为了字符串,因为字符串比较似乎比比较原始类型更难
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-28
  • 2011-03-08
  • 1970-01-01
  • 2021-05-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多