Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 检查两个数组在相同位置是否具有相同的值_Java_Arrays - Fatal编程技术网

Java 检查两个数组在相同位置是否具有相同的值

Java 检查两个数组在相同位置是否具有相同的值,java,arrays,Java,Arrays,我正在编写代码,其中使用数组作为拼图的一部分,拼图的目标是拼图被置乱,用户必须输入命令才能将拼图恢复到原始状态。我将原始数据保存在一个变量中,将当前数据保存在一个变量中,这是用户输入更改的内容 如果用户完成拼图,我希望while循环终止,因此我尝试了以下代码: if (arroriginal == currentarr){ System.out.println("Congratulations! You have completed the puzzle");

我正在编写代码,其中使用数组作为拼图的一部分,拼图的目标是拼图被置乱,用户必须输入命令才能将拼图恢复到原始状态。我将原始数据保存在一个变量中,将当前数据保存在一个变量中,这是用户输入更改的内容

如果用户完成拼图,我希望while循环终止,因此我尝试了以下代码:

if (arroriginal == currentarr){
            System.out.println("Congratulations! You have completed the puzzle");
        }
然而,这并不起作用,因为当我开始拼图时,任何输入都会导致完成消息。有人能帮我吗

我猜“==”操作符只是检查数组中的内容,而不是值的位置。使用Arrays.equalsarray1,array2比较数组的内容

array1==array2仅当它们相同时才会返回true

public static void main(String[] args) throws Exception {
    int [] array1 = new int[]{1,2,3};
    int [] array2 = new int[]{1,2,3};
    int [] array3 = new int[]{1,2,3};

    System.out.println(array1 == array2);//this will print false
    System.out.println(Arrays.equals(array1, array2));//this will print true
    array2 = array1;
    //now "==" will return true
    System.out.println(array1 == array2);
    Arrays.sort(array1);
    Arrays.sort(array3);
    System.out.println(Arrays.equals(array1,array3));//this will return true
}
下面是假设

int a = new a[5];
int b = new b[5];
这是两个具有某些值的数组 首先,你必须对数组进行排序,知道如何使位置相同

for(i=0;i<5;i++){
if(a[i]!=b[i]){
//print arrays don't match
//use some flag that helps u to know that it's a failure
break;   // u have to use break statement to end the loop
}
}
//Now use the flag here using if statement to find if u have a match or not

从你的问题看。。。。这是我得到的。。。希望它能帮助…

从另一种方法中选择效率较低的方法。使用此选项的唯一原因是如果要比较长度不同的数组

int array1[];
int array2[];

boolean flag = true;
int size;
if(array1.length > array2.length) size = array2.length;
else size = array1.length;  
    for(int i = 0; i < size; i++) {
        if(array1[i] != array2[i]) {
            break;
            flag = false;
        }
    }
if(flag == false) System.out.print("Not equal!");

这基本上计算出哪个数组更大,然后循环较小数组的大小,并检查每个元素是否相等。如果没有,它将标记为false并中断循环。

您也可以循环数组中的值并退出循环,您会发现一个不同的值。

使用arrays.equalsarroriginal,currentarr。@RJB如果没有看到代码,很难说。试着发布相关部分,或者发布一篇文章。好的,我已经编辑了帖子。我写这篇文章只是想了解更多关于java中“==”操作符的信息。运算符“==”比较对象引用,它检查两个操作数是否指向同一个对象,而不是等效的对象,即同一个对象。这是否比较数组中值的位置?谢谢,我如何将这一点融入我刚刚在主帖子中输入的代码中?arroriginal和currentarr在同一位置具有相同的值?你能分享这两个数组的内容吗?arroriginal是我在拼图中试图与currentarr匹配的原始数组。它是4x4,有16个值,一次上升1个。currentarr是Arrooriginal的混合版本,用户使用rotateRow和rotateColumn方法尝试匹配原始版本,然后打印祝贺消息。如果两个数组在同一正电子上没有相同的值,请先使用Arrays.sort。我已经更新了答案。这真的不是很有帮助。您没有示例代码,并且已经有两个答案更详细地介绍了此方法。