因此,我有一个分配来创建一个布尔方法,如果给定的整数数组中存在重复的整数,则该方法将返回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函数只做最内部的循环。这只是一个很小的布局,因为我不断更改代码。我确实尝试过在线查找这些东西,但似乎找不到解决方法
答案 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();
}