具有数组的比较嵌套循环的布尔方法如何解决

时间:2018-09-21 18:33:22

标签: java for-loop if-statement boolean

因此,我有一个分配来创建一个布尔方法,如果给定的整数数组中存在重复的整数,则该方法将返回true或false。问题是检查的唯一方法是获取每个元素并将其与其他元素进行比较,有点像插入排序。 问题是它无法读取我的结果变量说它没有启动 这是代码:

public static boolean hasDuplicate(int numOfElement, int[] numArr)
    {
    int numOfElements = numOfElement;
    int[] uncheckedArr = numArr;
    boolean result;

    for( int i = 0 ; i < numOfElement; i++) // takes an element in order from left to right
    {
        for(int j = i + 1; j < numOfElement; j++)
        {
            if (numArr[i] == numArr[j])
                result = true;
        }


    }
    return result;
}

我的问题是我该如何解决?我想让它在检测到阵列中的重复项时也停止。但是我知道break函数只做最内部的循环。这只是一个很小的布局,因为我不断更改代码。我确实尝试过在线查找这些东西,但似乎找不到解决方法

3 个答案:

答案 0 :(得分:2)

您应该将布尔变量初始化为false

ERROR in [at-loader] ./src/index.ts:152:17
    TS2339: Property 'cxtmenu' does not exist on type 'Core'.

此外,您可以将收到的变量用作参数,因此这些行无用

boolean result = false;

您可以这样编写代码:

int numOfElements = numOfElement;
int[] uncheckedArr = numArr;

答案 1 :(得分:0)

也许可以尝试以下方法:

public static boolean hasDuplicate(int numOfElement, int[] numArr) {
    boolean found = false;
    int i = 0;
    while (!found && i < numOfElement) {
        int j = i + 1;
        while (!found && j < numOfElement) {
            if (numArr[i] == numArr[j]) {
                found = true;
            }
        }
    }
    return found;
}

请检查您计算机上的代码:)我无法通过手机执行该代码:)我要重点关注的是更改了您的代码,尤其是循环停止条件。

答案 2 :(得分:0)

只是一个Java 8 Stream.的想法

//ofcourse you can remove numOfElement from method signature. i didnt use.
public static boolean hasDuplicate(int numOfElement, int[] numArr) {

    List<Integer> numArrList = Arrays.stream(numArr).boxed().collect(Collectors.toList());
    return new HashSet<Integer>(numArrList).size() != numArrList.size();
}