Quadrat Mit Muster

Diskutiere Quadrat Mit Muster im Java Basics - Anfänger-Themen Bereich.
B

Benni002

Hallo,
Ich habe ne Frage zu einer Aufgabe die wir unter anderem über die "Corona Ferien" aufbekommen haben und zwar soll man ein Quadrat mit einem Muster erstellen, dass über die Benutzereingabe ausgegeben wird(Datei). Mein erster Gedanke wären 2 for Schleifen und danach ne if else Verzweigung gewesen, doch ganz verstanden habe ich das ganze noch irgendwie nicht, da wir sowas auch noch nie gemacht haben.
Hoffe mir kann jemand helfen.
Danke schon einmal im Voraus.
 

Anhänge

B

Benni002

Java:
import java.util.*;
public class QuadratMitMuster {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("Gib einen Wert ein");
        int number = sc.nextInt();
        for (int a = 0; a <= number; a++) {
            for (int b = 1; b < a; b++) {
                if(a < number) {
                    System.out.print("O");
                }
                else {
                    System.out.println("*");
                }
                System.out.println();
            }
        }
    }
}
 
J

JustNobody

Da wäre evtl. sinnvoll, erst einmal zu überlegen, was Du genau machen möchtest...

Oder wir tasten uns erst einmal langsam ran - vereinfachen wir die Aufgabe erst einmal so, dass wir nur ein Quadrat mit # schreiben wollen.
Du hast die number eingelesen.

Wie kannst Du jetzt number Zeilen mit jeweils number Elementen schreiben?
Kannst Du dazu einmal in Worten schreiben, was Du machen würdest? Wie gehst Du da vor, wenn Du das von Hand mit Papier und Stift machen würdest?
 
B

Benni002

Also ich würde mal 2 verschachtelte for schleifen machen, in der ersten deklariere ich halt mal Zb: number1 = 0 ,dann würde ich sagen das die Variable immer kleiner als die eingegebe Zahl ist und am schluss halt number1++ und bei der zweiten for Schleife genauso, einziger Unterschied dann number2 statt number1. Danach gebe ich die # aus und außerhalb der Scheife dann noch ein leere Ausgabe und das wars.
Also hier als Code:
Java:
import java.util.*;
public class HAA {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("Gib einen Wert ein");
        int hoehe = sc.nextInt();
        for (int number1 = 0; number1 < hoehe; number1++) {
            for (int number2 = 0; number2 < hoehe; number2++) {
                System.out.print("#");
            }
            System.out.println();
        }
    }
}
 
J

JustNobody

Ja, sehr gut. Als Verbesserungsvorschlag hätte ich da jetzt maximal die Variablennamen ... number1 und number2 sagen nichts aus. Wichtig ist halt, dass die äußere Schleife die Zeilen und die innere die Zeile behandelt. Das ist doch schon top.

Jetzt wird es etwas komplexer - nicht von der Programmierung her sondern von der Logik ... denn wir wollen ja jetzt abwechselnd zwei Zeichen schreiben...
Dazu brauchen wir ein Kriterium: Wenn Du in Zeile 1 hast: 0*0*0 und dann in Zeile 2 *0*0*:
Fällt Dir da evtl. irgend ein Kriterium ein, wie Du da unterscheiden kannst ... Schau Dir dazu einfach einmal zu jedem 0 und * an, was da number1 und number2 für Werte hat.
 
J

JustNobody

Oh, die Möglichkeit hab ich nicht gesehen. Sehr gut! Ist deutlich besser als meine Idee!

(Meine Idee wäre etwas wie (number1 + number2) % 2 == 0 gewesen. Aber Du hast da etwas deutlich besseres gefunden!)

Schaffst Du es, da nun in deinen Code das als Bedingung noch einzubauen?
 
J

JustNobody

Oh, die Möglichkeit hab ich nicht gesehen. Sehr gut! Ist deutlich besser als meine Idee!

(Meine Idee wäre etwas wie (number1 + number2) % 2 == 0 gewesen. Aber Du hast da etwas deutlich besseres gefunden!)

Schaffst Du es, da nun in deinen Code das als Bedingung noch einzubauen?
Ups, ich war zu schnell. ganz so einfach ist es doch nicht. Ansonsten hast Du nur ein
0*****
*0****
**0***
...

Aber du könntest ein (number1 % 2) != (number2 % 2) machen. (Was ähnlich ist wie meine Idee). Das wäre dann die Prüfung, ob beides ungerade ist oder beides gerade ...
 
B

Benni002

Java:
import java.util.*;
public class HAA {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("Gib einen Wert ein");
        int hoehe = sc.nextInt();
        for (int number1 = 0; number1 < hoehe; number1++) {
            for (int number2 = 0;number2 < hoehe; number2++) {
                if((number1 % 2) != (number2 % 2)){
                    System.out.print("O");
                }
                else {
                    System.out.print("*");
                }
            }
            System.out.println();
        }
    }
}
Ich weiß irgendwie noch nicht ganz wie ich es richtig einbaue...
 
J

JustNobody

Ok, das war jetzt definitiv mein Fehler. Ich habe nicht in das PDF geschaut und bin bei Muster irgendwie von diesem Schachbrett-Muster ausgegangen, das Dein Code ja korrekt hat:
Code:
C:\Projects>java HAA
Gib einen Wert ein
5
*O*O*
O*O*O
*O*O*
O*O*O
*O*O*

C:\Projects>
Also sorry wenn ich dich verwirrt habe. Damit war Dein Ansatz natürlich schon relativ gut.

Probier einmal die Bedingung aus, die Du zuerst geschrieben hast. Das ist noch nicht die Lösung, aber mach es einmal und vergleiche es mit der Vorgabe. Also in #7 wolltest Du wohl number1 != number2 prüfen.

Oder Du überlegst, was die Werte sind, wenn das andere Zeichen kommen soll:
number1 = 0, number2 = hoehe-1
number1 = 1, number2 = hoehe-2
number1 = 2, number2 = hoehe-3
Kannst Du daraus evtl. auch so schon eine Regel finden?

Und noch einmal sorry, dass ich ab #6 so total das falsche Ziel vor Augen hatte...
 
B

Benni002

Java:
import java.util.*;
public class QuadratMitMuster {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("Gib einen Wert ein");
        int hoehe = sc.nextInt();
        for (int number1 = 0; number1 < hoehe; number1++) {
            for (int number2 = 0;number2 < hoehe; number2++) {
                if(number1 != number2){
                    System.out.print("O");
                }
                else {
                    System.out.print("*");
                }
            }
            System.out.println();
        }
    }
}
Irgendwie komme Ich nicht drauf, habe es eben mit number1 != number2 gemacht, da ist es eben
 
J

JustNobody

Also wenn man sich die Reihe anschaut, dann könnte man mal prüfen:
number2 == hoehe - 1 - number1
 
Thema: 

Quadrat Mit Muster

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben