de Programmieren Sprachen Java

Java ASCII-Art - O

Ziel ist es mithilfe von Sternen ein O zeichnen zu können. Dafür überlegen wir uns erstmal wie es aussehen soll.

1*****
2*   *
3*   *
4*   *
5*****

Damit können wir jetzt unsere Regeln für unser Programm festlegen. Wir schreiben also in jeder Spalte erstmal am Anfang und am Ende ein Sternchen.

 1public static void main(String[] args) {
 2  int n = 5;
 3  for (int i = 0; i < n; i++) {
 4    System.out.print("*");
 5    System.out.println("*");
 6  }
 7}
 8```java
 9
10Dieses Programm schreibt jetzt am Anfang und am Ende der Zeile ein Leerzeichen. Wir müssen also jetzt noch die Leerzeichen dazwischen kriegen und unsere Letzte Zeile komplett mit Sternen füllen.
11Leerzeichen bekommen wir mit einer anderen Schleife hin:
12
13
14```java
15public static void main(String[] args) {
16  int n = 5;
17  for (int i = 0; i < n; i++) {
18    System.out.print("*");
19    for (int j = 0; j < n - 2; j++) {
20      System.out.print(" ");
21    }
22    System.out.println("*");
23  }
24}

Jetzt haben wir quasi zwei Spalten von Sternen und müssen uns noch darum kümmern, dass die letzte und erste anders behandelt wird. Wir nehmen hier auch bewusst n - 2, da wir zwei Zeichen schon ausgeben und damit insgesamt zwei weniger Leerzeichen brauchen. Dazu können wir unsere schon vorhandene innere Schleife nehmen und mit einer Fallunterscheidung prüfen welches Zeichen wir nehmen müssen (Sternchen oder Leerzeichen).

 1public static void main(String[] args) {
 2  int n = 5;
 3  for (int i = 0; i < n; i++) {
 4    System.out.print("*");
 5    for (int j = 0; j < n - 2; j++) {
 6      if (i == n - 1 || i == 0) {
 7          System.out.print("*");
 8      } else {
 9          System.out.print(" ");
10      }
11    }
12    System.out.println("*");
13  }
14}

Hier prüfen wir jetzt einfach ob wir in der letzten Zeile sind (i ist gleich n -1 ) also I ist gleich unser Ende unserer For-Schleife oder wir in der ersten Zeile sind (i ist damit 0) dann geben wir statt Leerzeichen also Sterne aus.