Advertisement
flomath

palindrom_flos_variante

Mar 19th, 2015
182
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.91 KB | None | 0 0
  1.  
  2. public class Palindrom2 {
  3.  
  4.    
  5.     public static void main(String[] args) {
  6.         // TODO Auto-generated method stub
  7.        
  8.        
  9.         // TESTCODE ####ANFANG####
  10.         int[] palindromAusgangsArray ={1,2,3,4,5,6,7};
  11.        
  12.         for( int i=0; i<palindromAusgangsArray.length; i++){
  13.             System.out.print(palindromAusgangsArray[i]);
  14.         }
  15.         int[] palindromErgebnisArray = palindrom(palindromAusgangsArray);
  16.         System.out.println();
  17.         for( int i=0; i<palindromErgebnisArray.length; i++){
  18.             System.out.print(palindromErgebnisArray[i]);
  19.         }
  20.         System.out.println();
  21.         System.out.println("Speicherplatz bzw. hier sieht man dass beide Arrays dieselbe Referenz haben:");
  22.         System.out.println(palindromAusgangsArray);
  23.         System.out.println(palindromErgebnisArray);
  24.  
  25.         // TESTCODE ####ENDE####
  26.  
  27.  
  28.     }
  29.    
  30.     public static int[] palindrom(int[] palindrom){
  31.         /*
  32.          *  Der Unterschied von meiner Methode zur Musterlösung ist grundsätzlich,
  33.          * dass ich kein neues Array anlege, sondern dass übergebene Array direkt "manipuliere".
  34.          *  Ich muss quasi die erste Ziffer ans Ende hängen, und die letzte Ziffer an den Anfang,
  35.          *  also tausche ich immer den ersten Eintrag mit dem letzten, den zweiten mit dem vorletzten usw. aus,
  36.          *  solange bis zur Hälfte der Länge, da ich ja die Zahl die in der Mitte steht nicht tauschen muss,
  37.          *  denn die hätte ja keinen Tauschpartner. Das erklärt schonmal warum meine for-Loop nur bis vor der Hälfte durchgeht,
  38.          *  und die integer-Variable x hab ich einfach definiert, um nicht überall palindrom.length-1 schreiben
  39.          *  zu müssen. Anschließend kommt folgendes: Kommentar steht direkt über dem Befehl.
  40.          */
  41.        
  42.         int x= palindrom.length-1;
  43.         for(int i=0; i<(palindrom.length)/2;i++){
  44.             /*
  45.              *
  46.              *  Ich möchte nun die 0-te Stelle in meinem Array mit der Ziffer an der letzten Stelle in meinem
  47.              *  Array ersetzen. Mache ich dies, geht ja die Ziffer an der 0-ten Stelle verloren. ( eh klar oder?)
  48.              *  Genau deswegen muss ich diese Ziffer IMMER "speichern" bevor ich sie ersetze. Dies wird
  49.              *  mit folgender Zeile gemacht: int c = palindrom[i];
  50.              */
  51.            
  52.             int c=palindrom[i];
  53.             /*
  54.              * So, nun habe ich die Ziffer an der 0-ten Stelle "gespeichert" und kann beruhigt die 0-te Stelle
  55.              * mit der Ziffer in der letzten Stelle des Arrays überschreiben.
  56.              * Die Ziffer an der 0ten Stelle ist nun also nicht mehr 1 sondern 7.
  57.              */
  58.             palindrom[i]=palindrom[x];
  59.             /*
  60.              * So, jetzt habe ich die 0-te Stelle des Arrays richtig gesetzt, denn genau
  61.              * dass muss der Algorithmus ja können. Aber hey, wo ist jetzt die Ziffer von der 0-ten Stelle?
  62.              * Richtig, die habe ich ja unter c "gespeichert". Also
  63.              * setze ich die letzte Stelle mit palindrom[x]=c einfach auf den Wert an der 0-ten Stelle.
  64.              */
  65.             palindrom[x]=c;
  66.             /*
  67.              * x wurde ja oben mit palindrom.length-1 initialisiert. Will ich nun also nicht
  68.              * die letzte Ziffer im Array tauschen sondern die zweitletzte
  69.              * muss ich -1 durchführen. Also wird x mit jedem Schleifendurchgang dekrementiert.
  70.              */
  71.             x--;
  72.             }
  73.        
  74.         // Veranschaulichung an einem Beispiel-Array komplett durchgeführt
  75.         /*
  76.          * Sei unser Array gefüllt mit 10 11 12 13
  77.          * 10 -> 0.Stelle
  78.          * 11 -> 1.Stelle
  79.          * 12 -> 2.Stelle
  80.          * 13 -> 3.Stelle
  81.          * 1.SCHLEIFENDURCHGANG
  82.          * c = 10
  83.          * Array an der Stelle 0 wird auf den Wert vom Array an der letzten Stelle gesetzt, also auf 13.
  84.          * Array an der Stelle 3(= letzte Stelle) wird auf c gesetzt, also auf 10.
  85.          * 2.SCHLEIFENDURCHGANG
  86.          * c = 11
  87.          * Array an der Stelle 1 wird auf den Wert vom Array an der zweitletzten Stelle gesetzt, da wir "x--" durchgeführt haben!, also auf 12.
  88.          * Array an der Stelle 2 wird auf den Wert von c gesetzt, also 11.
  89.          *
  90.          * Zu diesem Zeitpunkt ist nun i=1 und palindrom.length/2 = 2, also ist dies der letzte
  91.          * Schleifendurchgang, da danach die Bedingung i < palindrom.length/2 nicht mehr zutrifft.
  92.          */
  93.  
  94.         return palindrom;
  95.     }
  96. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement