是一个数组镜像

时间:2018-02-26 15:56:44

标签: java arrays nested-loops

我正在尝试比较数组的前半部分和后半部分。例如:[3, 7, 7, 3]3, 7是上半部分,7, 3是下半部分。我尝试使用嵌套循环,但到目前为止还没有工作。这是我的代码,问题是它有什么问题?

int [] arr = {3, 7, 7, 3};
boolean isMirror = false;

for (int i = arr.length/2 -1; i>=0; i--) {
    for (int j = arr.length/2; j < arr.length; j++) {
        if (arr[i] == arr[j]) {
            isMirror = true;
            break;
        } else {
            isMirror = false;
            break;
        }
    }
}
if (isMirror) {
    System.out.println("The array is mirror-like");
} else {
    System.out.println("The array is not mirror-like");
}

3 个答案:

答案 0 :(得分:1)

问题是您使用嵌套循环将773进行比较,因此,isMirror将为false,因此删除嵌套循环并使用两个变量单循环

boolean isMirror=true;
for(int i=0, j = arr.length-1; i<arr.length/2;i++,j--){
    if(arr[i]!=arr[j]){
        isMirror=false;
        break;// not equal so go out
    }
}

答案 1 :(得分:0)

如果你想找到一面镜子,只需要一个循环:

set boolean mirror = true;
walk from i=0 (first element) to the mid of the array length (say n/2).

  if array[i] != array[maxlength - i] 
     set mirror = false, and the you may end

答案 2 :(得分:0)

isMirror = falsearr[i]不相等时,您只需要一个循环并设置arr[j]

int[] arr = {3, 7, 7, 3};
boolean isMirror = true;

for (int i = 0; i <= arr.length/2; i++) {
    int j = arr.length - 1 - i;
    if (arr[i] != arr[j]) {
        isMirror = false;
        break;
    }
}
if (isMirror) {
    System.out.println("The array is mirror-like");
} else {
    System.out.println("The array is not mirror-like");
}