如果数组的所有元素都大于0,并且所有小于最大偶数的偶数都在数组中,则数组被定义为完整。 例如{2,3,2,4,11,6,10,9%,8}是完整的,因为
一个。它的所有元素都大于0
湾最大偶数是10 c。所有偶数是小于10(2,4,6,8)是在数组中。
但是{2,3,3,6}是不完整的,因为偶数4丢失。 {2,3,4,3,6}未完成,因为它包含负数。 写一个名为isComplete功能如果数组参数是一个完整的数组,返回1。否则返回0
这是一个我必须解决的问题,但我无法找到这个问题的良好逻辑。在这里,我在第一个循环和第二个循环中找到了数组中的最大偶数,我必须检查所有偶数小于最大偶数,我坚持这个。请帮帮我,,,,,,,,,,我的代码在下面
public class Complete {
public static void main(String[] args) {
System.out.println(isComplete(new int[]{2,3,2,4,11,6,10,9,8}));
System.out.println(isComplete(new int[]{2,3,3,6}));
System.out.println(isComplete(new int[]{2,-3,4,3,6}));
}
private static int isComplete(int[] i) {
int set = 1;
int maxeven = 0;
int count = 0;
for(int a = 0; a < i.length; a++) {
if(i[a] < 0) {
set = 0;
break;
}
if(i[a]%2 == 0 && i[a] > maxeven) {
maxeven = i[a];
}
}
for (int c = 2; c <= maxeven; c=c+2) {
for( int b = 0; b<i.length; b++) {
if (c == i[b]) {
count++;
}
}
if (count > 0) {
set = 1;
} else {
set = 0;
break;
}
}
return set;
}
}
答案 0 :(得分:2)
我在第一个循环中找到了数组中的最大偶数 第二个循环,我必须检查所有偶数小于 最大偶数
我遵循了这个逻辑并写了这个。我正在检查条件1(所有元素&gt; 0)的有效性,并在相同的循环中找到最大的偶数。 在第二个循环中,我正在检查是否所有偶数都小于最大偶数nuber。
public class Complete {
public static void main(String[] args) {
System.out.println(isComplete(new int[] { 2, 3, 2, 4, 11, 6, 10, 9, 8 }));
System.out.println(isComplete(new int[] { 2, 3, 3, 6 }));
System.out.println(isComplete(new int[] { 2, -3, 4, 3, 6 }));
}
private static int isComplete(int[] i) {
int maxEven = 0;
for (int element : i) {
if (element <= 0) {
return 0;
}
if (element % 2 == 0) {
if (element > maxEven) {
maxEven = element;
}
}
}
for (int a = 2; a < maxEven; a = a + 2) {
if (!hasElement(i, a)) {
return 0;
}
}
return 1;
}
private static boolean hasElement(int[] i, int a) {
for (int element : i) {
if (element == a) {
return true;
}
}
return false;
}
}
答案 1 :(得分:1)
在第二个循环中设置count = 0
,如下所示:
for(int c = 2; c<=maxeven;c=c+2){
count = 0;
for(int b = 0;b<i.length;b++){
那应该可以解决你的问题。如果没有count = 0
,在您查找“2”后,计数将为> 0,因此即使没有“4”,当您查找“4”时,计数&gt; 0也会为真。