Erste Schritte Arrays befüllen und ausgeben

Hallo, bin noch relativ neu bei Java und habe folgende Frage:
Ich muss Arrays basierend auf einer Beschreibung (hab dazu bestimmte Zahlen) ausfüllen und diese dann entsprechend ausgeben als eine Art "Bild" oder "Landschaft" (z.b. durch Buchstaben, damit es so ähnlich aussieht wie das Bild)
Ich hab allerdings keine Ahnung wie genau ich da nun vorgehen muss oder was genau ich "eintragen" muss, ich hab mir auch schon einige Tutorials angeguckt, weiß aber trotzdem noch nicht so recht, was ich tun soll..

Ich habe Arrays erstellt/zugeordnet (10 insgesamt, da ich 10 Zahlen habel) und ich weiß das ich for-Schleifen benötige (da ich die Höhe und Breite der Felder bestimmen muss)

Bin für jede Hilfe dankbar!
 
Also erstmal zur Ausgabe dieser "Landschaft".
Da du die Abbildungen nicht angehangen hast, kann man nur raten wie das aussehen soll. Hier mal ein Beispiel:
Java:
public static void main(String[] args) {

    int[] heights = {5, 3, 7, 2, 6, 4, 5, 9, 1, 2};
    int maxHeight = Arrays.stream(heights).max().getAsInt();

    for (int h = maxHeight; h > 0; h--) {
        for (int height : heights) {
            if (height >= h) {
                System.out.print(" X ");
            } else {
                System.out.print("   ");
            }
        }
        System.out.println();
    }
}
Bei der Berechnung der Wasserblöcke kommst du dann ja vllt. erstmal alleine weiter.
 
Also erstmal zur Ausgabe dieser "Landschaft".
Da du die Abbildungen nicht angehangen hast, kann man nur raten wie das aussehen soll. Hier mal ein Beispiel:
Java:
public static void main(String[] args) {

    int[] heights = {5, 3, 7, 2, 6, 4, 5, 9, 1, 2};
    int maxHeight = Arrays.stream(heights).max().getAsInt();

    for (int h = maxHeight; h > 0; h--) {
        for (int height : heights) {
            if (height >= h) {
                System.out.print(" X ");
            } else {
                System.out.print("   ");
            }
        }
        System.out.println();
    }
}
Bei der Berechnung der Wasserblöcke kommst du dann ja vllt. erstmal alleine weiter.
Danke dir erstmal!
und sorry, es soll so aussehen:
9ED80A0E-FE58-4E06-B784-76552D6953ED.jpeg

Kannst du mir vllt erklären, was genau du gemacht hast, damit ich es besser nachvollziehen kann? Ist die erste Aufgabe wo ich mit Arrays und Höhen/Breite usw arbeite, davor waren es nur „simple“ Aufgaben
 
Java:
    public static void main(String[] args) {

        //Die Höhen der Landschaft
        int[] heights = {5, 3, 7, 2, 6, 4, 5, 9, 1, 2};

        //maximale Höhe ermitteln -> Damit  weißt du wie viele "vertikale" Schleifendurchläufe du brauchst
        int maxHeight = Arrays.stream(heights).max().getAsInt();

        //Von oben nach unten durch die Landschaft gehen -> h ist der "Höhencounter".
        for (int h = maxHeight; h > 0; h--) {
           
            //Von links nach rechts jede einzelne Höhe betrachten
            for (int height : heights) {
               
                //Ist die Höhe der aktuellen Spalte größer oder gleich dem Höhencounter, dann gebe "X" aus.
                if (height >= h) {
                    System.out.print(" X ");
                }
                //Ansonsten sind wir noch zu hoch und geben nichts aus.
                else {
                    System.out.print("   ");
                }
            }
            //Komplette Zeile durchlaufen, Zeilenumbruch ausgeben
            System.out.println();
        }

    }
 
Java:
    public static void main(String[] args) {

        //Die Höhen der Landschaft
        int[] heights = {5, 3, 7, 2, 6, 4, 5, 9, 1, 2};

        //maximale Höhe ermitteln -> Damit  weißt du wie viele "vertikale" Schleifendurchläufe du brauchst
        int maxHeight = Arrays.stream(heights).max().getAsInt();

        //Von oben nach unten durch die Landschaft gehen -> h ist der "Höhencounter".
        for (int h = maxHeight; h > 0; h--) {
         
            //Von links nach rechts jede einzelne Höhe betrachten
            for (int height : heights) {
             
                //Ist die Höhe der aktuellen Spalte größer oder gleich dem Höhencounter, dann gebe "X" aus.
                if (height >= h) {
                    System.out.print(" X ");
                }
                //Ansonsten sind wir noch zu hoch und geben nichts aus.
                else {
                    System.out.print("   ");
                }
            }
            //Komplette Zeile durchlaufen, Zeilenumbruch ausgeben
            System.out.println();
        }

    }
Ich hätte mal noch eine Frage, was genau muss ich an meinem Code ändern, damit ich es so ausgeben kann, das ich die Arrays in der Eingabe schreiben kann? So das die arrays "nicht fest" sind
sprich es sollte so im terminal/eingabe sein: java Beispiel 1 2 3 4

Ich habe folgendes bereits hinzugefügt:
int height = Integer.parseInt (args[0]);

int[] eingabe = new int [height];

for(int i = 0; i < height; i++) {
int o = i+1;
eingabe = Integer.parseInt(args [o]);
System.out.println(eingabe);
}
}

Wie kann ich das allerdings, auf das ganze Java Programm ausführen, so das es funktioniert, bin hier am versuchen, aber kriege es nicht hin bzw es mit dem zu kombinieren, was du mir gegeben hattest
 
Code bitte immer in [code=Java]//deinCode[/code] Text schreiben.

So kannst du deine Eingabe in ein int-Array umwandeln. Der Rest des Codes von oben bleibt dann einfach gleich.
int[] heights = Arrays.stream(args).mapToInt(Integer::parseInt).toArray();
 
Code bitte immer in [code=Java]//deinCode[/code] Text schreiben.

So kannst du deine Eingabe in ein int-Array umwandeln. Der Rest des Codes von oben bleibt dann einfach gleich.
int[] heights = Arrays.stream(args).mapToInt(Integer::parseInt).toArray();
okay danke, dann probier ich das aus und melde mich dann nochmal ob alles funktioniert hat
 
Passende Stellenanzeigen aus deiner Region:

Neue Themen

Oben