# Arraylisten nebeneinander ausgeben



## pbug (5. Okt 2016)

Hallo zusammen,

ich bin noch neu in Java und hätte mal eine Frage an euch.
Wie kann ich Arraylisten nebeneinander ausgeben lassen ?
Ich will ein Namen im Sternchenformat ausgeben lassen aber wenn ich die Listen ausgeben will dann printet Java es untereinander aus. Wie kann ich diese stattdessen nebeneinander ausgeben lassen ? 


Mit freundlichen Grüßen,
P. Buganik


----------



## stg (5. Okt 2016)

Du musst die Ausgabe schon Zeile für Zeile in die Konsole schreiben. Also erst die erste Zeile von deinem P und und deinem I, dann die zweite Zeile von P und I usw...

Mach stattdessen aber doch lieber was Sinnvolles ....


----------



## Cromewell (5. Okt 2016)

#println() dort steckt ln drin, was eine, am Ende des geprinteten, neue Zeile anfügt. #print() macht dies nicht.


----------



## pbug (5. Okt 2016)

Es muss aber auch gehen das man jeden Buchstaben mit Sternchen deklariert und dann die Buchstaben nebeneinander ausgibt. Oder ist es besser dafür ein Array zu nehmen anstatt einer ArrayListe ?
Ich hab schon gesehen das man z.B. den Buchstaben "P" in einem Array zusammenstellt, dann "I" usw...
Aber wie gebe ich die Nebeneinander aus ? 
Ich will nicht jede Zeile von dem Namen deklarieren, das ist ja nicht Sinn der Übung.


----------



## Cromewell (5. Okt 2016)

Erstmal musst du die Länge der Buchstaben einheitlich machen. Dann könntest du alle 0er in einer Zeile ausgeben, dann newLine, dann die 1er usw.


----------



## Xyz1 (5. Okt 2016)

Oi, so viele Ausrufezeichen... würd bei uns nicht durchs Codereview kommen. 

Edit: Soll das so?

```
public class JavaApplication5 {

    ArrayList p = new ArrayList();
    ArrayList i = new ArrayList();

    public static void main(String[] args) throws IllegalArgumentException, IllegalAccessException {
        JavaApplication5 ja = new JavaApplication5();
        ja.p.add("**");
        ja.p.add("*");
        ja.p.add("***");

        ja.i.add("**");
        ja.i.add("*");
        ja.i.add("***");

        for (Field declaredField : ja.getClass().getDeclaredFields()) {
            String name = declaredField.getName();
            ArrayList a = (ArrayList) declaredField.get(ja); // check this first
            for (Object object : a) {
                String s = object.toString();
                for (char c : s.toCharArray()) {
                    if (c == '*') {
                        System.out.print(name);
                    }
                }
                System.out.println("");
            }
        }
    }
}
```

(Du musst `java.lang.reflect.*;` importieren) Das gibt jetzt für jedes '*' den Namenbuchstaben der Liste aus, nebeneinander, zeilenweise.


----------



## Viktim (6. Okt 2016)

*


DerWissende hat gesagt.:



for (Field declaredField : ja.getClass().getDeclaredFields()) {
String name = declaredField.getName();
ArrayList a = (ArrayList) declaredField.get(ja); // check this first
for (Object object : a) {
String s = object.toString();
for (char c : s.toCharArray()) {
if (c == '*') {
System.out.print(name);
}
}
System.out.println("");
}
}

Zum Vergrößern anklicken....


was zu Hölle *


----------



## thecain (6. Okt 2016)

Das frag ich mich schon länger nicht mehr..


----------



## Viktim (6. Okt 2016)

@DerWissende welchem Anfänger, der gerade mit Arrays anfängt und kein System.out.print(); kennt hilft dieser Code?!?
Der ist viel zu kompliziert, für das einfache Problem und hilft auch nicht wirklich.


----------



## Xyz1 (6. Okt 2016)

Naja, ich lese eine _*Anforderung*_, für jedes Sternchen ('*') den Anfangsbuchstaben der Liste ausgeben lassen, in der es liegt! Und dann setze ich das einfach um...

Vielleicht hab ich mich auch komplett verrannt... 

Was ist/war denn jetzt sein Problem, dass print*LN *auch newline/line new ausgibt?


----------



## Cromewell (6. Okt 2016)

Um meine Idee von oben nochmal aufzugreifen (sowas in der Art):

```
public static void main(String[] args) {
    String[] capA = {"* * * ",
                     "*   * ",
                     "* * * ",
                     "*   * "};

    String[] capP = {"* * * ",
                     "*   * ",
                     "* * * ",
                     "*     "};

    ArrayList<String[]> name = new ArrayList<>();
    name.add(capP);
    name.add(capA);
    name.add(capP);
    name.add(capA);

    for(int i = 0; i < capA.length; i++){
        for(String[] aName : name) {
            System.out.print(aName[i]);
        }
        System.out.println();
    }
}
```


----------



## Xyz1 (6. Okt 2016)

Achso, dann sei soetwas gesucht: http://patorjk.com/software/taag/#p=display&f=Graffiti&t=Type Something hallo

Das "ging" aber nur schwer aus der Beschreibung "hervor".


----------



## JStein52 (6. Okt 2016)

DerWissende hat gesagt.:


> (Du musst java.lang.reflect.*; importieren)


Du hast schon gelesen dass er Anfänger ist ?  Was soll dann diese Lösung 

Edit: hatte ein bisschen zu lange damit gewartet den Beitrag abzuschicken. Hat sich ja schon erledigt.


----------



## tommysenf (6. Okt 2016)

DerWissende hat gesagt.:


> Oi, so viele Ausrufezeichen... würd bei uns nicht durchs Codereview kommen.


Dein Code bei uns aber auch nicht ...


----------



## Xyz1 (6. Okt 2016)

tommysenf hat gesagt.:


> Dein Code bei uns aber auch nicht ...


Na und?? Hab ich irgendeinen Anspruch auf Richtigkeit gestellt? NEIN.  Wer mir so einen Käse vorsetzt, wie oben im Bildschirm zu sehen, den hau ich was um die Ohren!!!!


----------



## mrBrown (6. Okt 2016)

DerWissende hat gesagt.:


> Wer mir so einen Käse vorsetzt, wie oben im Bildschirm zu sehen, den hau ich was um die Ohren!!!!


Du stehst drauf, dich selbst zu schlagen?


----------



## JStein52 (6. Okt 2016)

DerWissende hat gesagt.:


> Wer mir so einen Käse vorsetzt, wie oben im Bildschirm zu sehen, den hau ich was um die Ohren


Eine Alternative dazu wäre du bittest den TE nochmal das Problem zu erklären, die andere einfach mal warten ob jemand anderes es vielleicht versteht. Du bist nur der Wissende, nicht der Allwissende


----------



## Xyz1 (6. Okt 2016)

Wäre ich allwissend, hätte ich ja hellseherische Fähigkeiten... Die Be- oder Umschreibung des Problems gibt nicht nicht viel her. Ich jedenfalls hab das nicht sofort verstanden. Hätte er einfach gesagt, ich möchte ein P zeichnen, das so aussieht:

```
****
*  *
****
*
*
```

dann wäre es für mich "klarer" gewesen.  Aber stimmt, jeder sollte Fragen dürfen.


----------



## Xyz1 (6. Okt 2016)

dann doch in etwa so:

```
public class JavaApplication5 {
    public static void main(String[] args) {
        ArrayList list = new ArrayList();
        list.add("");
        list.add("");
        list.add("");
        list.add("");

        addChar('P', list);
        addChar('A', list);
        addChar('P', list);
        addChar('A', list);

        printList(list);
    }

    static void addChar(char c, ArrayList list) {
        if (c == 'A') {
            list.add(0, list.remove(0) + "* * *  ");
            list.add(1, list.remove(1) + "*   *  ");
            list.add(2, list.remove(2) + "* * *  ");
            list.add(3, list.remove(3) + "*   *  ");
        }
        if (c == 'P') {
            list.add(0, list.remove(0) + "* * *  ");
            list.add(1, list.remove(1) + "*   *  ");
            list.add(2, list.remove(2) + "* * *  ");
            list.add(3, list.remove(3) + "*      ");
        }
    }

    static void printList(ArrayList list) {
        for (Object object : list) {
            System.out.println(object);
        }
    }
}
```


```
* * *  * * *  * * *  * * * 
*   *  *   *  *   *  *   * 
* * *  * * *  * * *  * * * 
*      *   *  *      *   *
```

das ist kaum zu lesen und langsam, aber wenn verlangt.


----------

