2016-04-18 14 views
0

Ich schreibe Code, der Arrays als Teil eines Puzzles verwendet, das Ziel des Puzzles ist, dass das Puzzle verschlüsselt ist und der Benutzer Befehle eingeben muss das Puzzle zurück zum Original. Ich habe das Original in einer Variablen gespeichert und die aktuelle in einer Variablen, die die Benutzereingabe ändert.Überprüfen, ob zwei Arrays die gleichen Werte an den gleichen Positionen haben

Ich möchte, dass die while-Schleife zu beenden, wenn der Benutzer das Puzzle vervollständigt so habe ich versucht, den folgenden Code:

if (arroriginal == currentarr){ 
      System.out.println("Congratulations! You have completed the puzzle"); 
     } 

Dies als jedoch nicht funktioniert, wenn ich das Puzzle jede Eingabe in der Abschlussmeldung ergäbe begonnen . Kann mir jemand helfen?? :-)

Ich vermute, mich, dass der ‚==‘ Operator nur den Inhalt überprüft und nicht die Positionen der Werte im Array

+2

Verwenden Sie 'Arrays.equals (arroriginal, currentarr)'. – saka1029

+0

@RJB schwer zu sagen, ohne den Code zu sehen. Versuchen Sie, die relevanten Teile zu veröffentlichen, oder veröffentlichen Sie [MCVE]. –

+0

Okay, ich habe den Beitrag bearbeitet – RonB7

Antwort

0

Verwenden Arrays.equals(array1, array2) zum Inhalt der Arrays vergleichen

array1 == array2 zurückkehren nur wahr, wenn sie gleich sind. Hier

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 
} 

ist die demo

+0

Vergleicht das die Positionen der Werte in den Arrays? – RonB7

+0

@RJB: Ja, es tut – Sanj

+0

Danke, wie würde ich das in den Code passen, den ich gerade in den Hauptpost gesetzt habe? – RonB7

0

Angenommen

int a = new a[5]; 
int b = new b[5]; 

Dies sind zwei Arrays mit einigen Werten ersten U das Array, wie einige sortieren, um die Positionen zu machen identisch

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 

Blick von Ihrer Frage .... Das ist wat I ' m bekommen ... Hoffe es hilft ...

0

Alternative, weniger effiziente Methode aus dem anderen. Der einzige Grund, dies zu verwenden, ist, wenn Sie Arrays mit unterschiedlichen Längen vergleichen.

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!"); 

Diese Zahlen im Grunde aus, welche Array größer ist, dann schleift die Größe der kleineren Arrays Zeiten und überprüft, um jedes Element zu sehen, ob sie nicht gleich sind. Wenn nicht, wird false angezeigt und die Schleife wird unterbrochen.

-1

Sie können auch die Werte in den Arrays durchlaufen und die Schleifen verlassen, wenn Sie einen anderen Wert finden.

+0

Das ist wirklich nicht sehr hilfreich. Sie haben keinen Beispielcode und es gibt bereits zwei Antworten, die genau diese Methode abdecken. –

Verwandte Themen