Java 检查两个数组在相同位置是否具有相同的值
我正在编写代码,其中使用数组作为拼图的一部分,拼图的目标是拼图被置乱,用户必须输入命令才能将拼图恢复到原始状态。我将原始数据保存在一个变量中,将当前数据保存在一个变量中,这是用户输入更改的内容 如果用户完成拼图,我希望while循环终止,因此我尝试了以下代码:Java 检查两个数组在相同位置是否具有相同的值,java,arrays,Java,Arrays,我正在编写代码,其中使用数组作为拼图的一部分,拼图的目标是拼图被置乱,用户必须输入命令才能将拼图恢复到原始状态。我将原始数据保存在一个变量中,将当前数据保存在一个变量中,这是用户输入更改的内容 如果用户完成拼图,我希望while循环终止,因此我尝试了以下代码: if (arroriginal == currentarr){ System.out.println("Congratulations! You have completed the puzzle");
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。我已经更新了答案。这真的不是很有帮助。您没有示例代码,并且已经有两个答案更详细地介绍了此方法。