1   /**
2    * 183.592 Programmierpraxis TU Wien WS2014/15 H.Moritsch
3    * Verarbeitung von String-Arrays
4    */
5   public class ArrayExamples3 {
6       public static void main(String[] s1rgs) {
7   
8           // Arrays deklarieren und erzeugen
9           String[] s1 = new String[10];
10          String[] s2 = new String[10];
11          String[] s3 = new String[10];
12  
13          // Array s1 initialisieren
14          for (int i = 0; i < 10; i++)            // elementweise Zuweisung von Werten:
15              s1[i] = "(element " + i + ")"; 
16              
17          // Array kopieren: Werte der Elemente   
18          for (int i = 0; i < 10; i++)            // Kopieren der Werte der Elemente von s1
19              s2[i] = s1[i];                      // in die entsprechenden Elemente von s2
20  
21  
22          // mittels length:
23          // for (int i = 0; i < s1.length; i++) 
24          //     s1[i] = i;
25  
26          // for (int i = 0; i < s1.length; i++) 
27          //     s2[i] = s1[i];
28  
29  
30          // Array s2 ausgeben
31          for (int i = 0; i < s2.length; i++) 
32              System.out.println("s2[" + i + "] : "+s2[i]);
33          System.out.println();       // Abschluss mit Leerzeile
34  
35          // Array s2 ausgeben, mittels Methode
36          ausgabe ( s2 );
37  
38          // Array s1 nach Array s3 kopieren
39          kopiere( s1, s3 );            // Array s3 wird verändert! 
40          ausgabe( s3 );
41  
42          // neues Array s4 erzeugen, das eine Kopie von s1 ist
43          String[] s4 = kopie( s1 );
44          ausgabe( s4 );
45  
46          // Elemente von s1 verdoppeln
47          verdopple( s1 );             // Array s1 wird verändert! 
48          ausgabe( s1 );
49  
50          // neues Array s5 erzeugen, das die verdoppelten Elemente von s1 enthält
51          String[] s5 = verdoppelt( s1 );
52          ausgabe( s5 );
53  
54      }
55  
56      /**
57      * Ausgabe aller Elemente eines Arrays.
58      */
59      private static void ausgabe(String[] s1) {
60  
61          for (int i = 0; i < s1.length; i++) 
62              System.out.println("[" + i + "]: " + s1[i]);
63  
64          System.out.println();               // Abschluss mit Leerzeile
65      }
66  
67      /**
68      * Kopieren eines Arrays.
69      * Das Array, das an Stelle von b übergeben wird, wird verändert!
70      */
71      private static void kopiere(String[] s1, String[] s2) {
72          for (int i = 0; i < s1.length; i++) // Kopieren der Werte der Elemente von s1
73              s2[i] = s1[i];                  // in die entsprechenden Elemente von s2
74      }
75  
76      /**
77      * Kopieren eines Arrays.
78      * Liefert neues Array, das eine Kopie des übergebenen Arrays ist.
79      */
80      private static String[] kopie(String[] s1) {
81          String[] r = new String[s1.length];        // neues Array r derselben Länge wie s1
82          
83          for (int i = 0; i < s1.length; i++) // Kopieren der Werte der Elemente von s1
84              r[i] = s1[i];                   // in die entsprechenden Elemente von r
85  
86          return r;                           // r wird als Ergebnis zurückgegeben
87      }
88  
89      /**
90      * Elementweises Verdoppeln eines String-Arrays.
91      * Das übergebene Array wird verändert!
92      */
93      private static void verdopple(String[] s1) {
94  
95          for (int i = 0; i < s1.length; i++)  
96              s1[i] = s1[i] + " *** " +  s1[i];   // Element i wird "verdoppelt"
97      }
98  
99      /**
100     * Elementweises Verdoppeln eines String-Arrays.
101     * Liefert ein neues Array, das die verdoppelten Strings des übergebenen Arrays enthält.
102     */
103     private static String[] verdoppelt(String[] s1) {
104         String[] r = new String[s1.length];     // neues Array derselben Länge wie s1
105 
106         for (int i=0; i< s1.length; i++)        // den Elementen von r werden die 
107             r[i] = s1[i] + " *** " + s1[i];     // entsprechenden Elemente von s1 "verdoppelt" zugewiesen
108 
109         return r;                               // r wird als Ergebnis zurückgegeben
110     }
111 
112 }
113