Java 如果下一个代码不应该';T

Java 如果下一个代码不应该';T,java,Java,如果数组的前半部分等于第二部分,则应返回true,但它保持返回false。。。我试过调试,但仍然不起作用。。。救命啊 public class Main { public static void main(String[] args) { int arr[] = {1, 2, 3, 1, 2, 3}; System.out.println(sda(arr)); }//main public static boolean sda(i

如果数组的前半部分等于第二部分,则应返回true,但它保持返回false。。。我试过调试,但仍然不起作用。。。救命啊

public class Main {

    public static void main(String[] args) {

        int arr[] = {1, 2, 3, 1, 2, 3};

        System.out.println(sda(arr));

    }//main

    public static boolean sda(int[] arr) {

        int[] arr2 = new int[arr.length];
        int[] arr3 = new int[arr.length];

        for(int i = 0; i < (arr2.length/2); i++) {
            arr2[i] = arr[i];
        }
        for(int i = arr.length - 1; i > (arr.length/2) - 1; i--) {
            arr3[i] = arr[i];
        }

        for(int j = 0; j < arr.length/2 - 1; j++) {
            if(arr3[j] != arr2[j]) return false;
        }
        return true;
    } 
}
公共类主{
公共静态void main(字符串[]args){
int arr[]={1,2,3,1,2,3};
系统输出打印LN(sda(arr));
}//主要
公共静态布尔sda(int[]arr){
int[]arr2=新int[arr.length];
int[]arr3=新int[arr.length];
对于(int i=0;i<(arr2.length/2);i++){
arr2[i]=arr[i];
}
对于(int i=arr.length-1;i>(arr.length/2)-1;i--){
arr3[i]=arr[i];
}
对于(int j=0;j
有什么建议吗?

公共静态布尔sda(int[]arr){
public static boolean sda(int[] arr) {
    
    for(int i=0, j=arr.length/2; i<arr.length/2 || j<arr.length; i++, j++)
        if(arr[i]!=arr[j])
            return false;
    return true;
}
对于(int i=0,j=arr.length/2;i
公共静态布尔sda(int[]arr){

对于(int i=0,j=arr.length/2;iEmmm…,一个好的解决方法是调试and的值。然后您会发现:

arr2
int arr2[] = {1, 2, 3, 0, 0, 0};
int arr3[] = {0, 0, 0, 1, 2, 3};

来吧!这样做并解决它。

嗯……好吧,一个好的解决方法是调试and的值。然后您会发现:

arr2
int arr2[] = {1, 2, 3, 0, 0, 0};
int arr3[] = {0, 0, 0, 1, 2, 3};

来吧!这样做并解决它。

如果我分解当前代码: 首先为arr2和arr3分配一个包含6个项目的空数组。 接下来,arr2在数组的前3个元素中被赋值(1,2,3)。 然后在数组的最后3个元素中分配arr3(1,2,3)。 如果我在第二个for循环下添加以下代码snipper:

        System.out.println("arr2: ");
        for(int i : arr2){
            System.out.println(i);
        }

        System.out.println("arr3: ");
        for(int i : arr3){
            System.out.println(i);
        }

你会发现这两个阿拉伯世界是不同的

arr2: 
1
2
3
0
0
0
arr3: 
0
0
0
1
2
3
要使结果返回true,可以调整arr2值的放置位置或调整arr3值在数组中的放置位置。 另一种解决方案是将最终for循环中两个数组值的计算更改为:

for(int j = 0; j < arr.length/2 - 1; j++) {
            if(arr3[j + (arr.length/2)] != arr2[j]) return false;
        }
for(int j=0;j
这样,两个循环的评估将针对arr2的前3个值和arr3的最后3个值。 总之,我已将sda方法更改为:

  public static boolean sda(int[] arr) {

        int[] arr2 = new int[arr.length];
        int[] arr3 = new int[arr.length];

        for(int i = 0; i < (arr2.length/2); i++) {
            arr2[i] = arr[i];
        }
        for(int i = arr.length - 1; i > (arr.length/2) - 1; i--) {
            arr3[i] = arr[i];
        }
        
        for(int j = 0; j < arr.length/2 - 1; j++) {
            if(arr3[j + (arr.length/2)] != arr2[j]) return false;
        }
        return true;
    }
公共静态布尔sda(int[]arr){
int[]arr2=新int[arr.length];
int[]arr3=新int[arr.length];
对于(int i=0;i<(arr2.length/2);i++){
arr2[i]=arr[i];
}
对于(int i=arr.length-1;i>(arr.length/2)-1;i--){
arr3[i]=arr[i];
}
对于(int j=0;j
如果我分解当前代码: 首先为arr2和arr3分配一个包含6个项目的空数组。 接下来,arr2在数组的前3个元素中被赋值(1,2,3)。 然后在数组的最后3个元素中分配arr3(1,2,3)。 如果我在第二个for循环下添加以下代码snipper:

        System.out.println("arr2: ");
        for(int i : arr2){
            System.out.println(i);
        }

        System.out.println("arr3: ");
        for(int i : arr3){
            System.out.println(i);
        }

你会发现这两个阿拉伯世界是不同的

arr2: 
1
2
3
0
0
0
arr3: 
0
0
0
1
2
3
要使结果返回true,可以调整arr2值的放置位置或调整arr3值在数组中的放置位置。 另一种解决方案是将最终for循环中两个数组值的计算更改为:

for(int j = 0; j < arr.length/2 - 1; j++) {
            if(arr3[j + (arr.length/2)] != arr2[j]) return false;
        }
for(int j=0;j
这样,两个循环的评估将针对arr2的前3个值和arr3的最后3个值。 总之,我已将sda方法更改为:

  public static boolean sda(int[] arr) {

        int[] arr2 = new int[arr.length];
        int[] arr3 = new int[arr.length];

        for(int i = 0; i < (arr2.length/2); i++) {
            arr2[i] = arr[i];
        }
        for(int i = arr.length - 1; i > (arr.length/2) - 1; i--) {
            arr3[i] = arr[i];
        }
        
        for(int j = 0; j < arr.length/2 - 1; j++) {
            if(arr3[j + (arr.length/2)] != arr2[j]) return false;
        }
        return true;
    }
公共静态布尔sda(int[]arr){
int[]arr2=新int[arr.length];
int[]arr3=新int[arr.length];
对于(int i=0;i<(arr2.length/2);i++){
arr2[i]=arr[i];
}
对于(int i=arr.length-1;i>(arr.length/2)-1;i--){
arr3[i]=arr[i];
}
对于(int j=0;j
如果((arr.length%2)==1),您可能需要对数组的奇数长度进行初始检查return false
@pks-为什么不写int j=arr.length/2?我复制了你的代码并尝试用int来做,但由于某种原因它不起作用,这是为什么?如果你已经初始化了多个变量或操纵了多个变量,你可以通过用逗号(,)分隔它们来实现在for循环中。如果((arr.length%2)==1),可能需要对数组
的奇数长度进行初始检查return false
@pks-为什么不写int j=arr.length/2?我复制了你的代码并尝试用int来做,但由于某种原因它不起作用,为什么会这样?如果你已经初始化了多个变量或操纵了多个变量,你可以通过在for循环中用逗号(,)分隔它们来实现。