Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Dringende Bitte um Erklärungen zum besseren Verständnis
(Und arbeiten Sie entsprechend mit intelligent verschachtelten Schleifen. Bedenken Sie, ob der Modulo-Operator Ihnen beim Plazieren der Sternchen hilft.)
Die Aufgabe habe ich durch viel probieren und mit Hilfe des Forums mit dem folgenden Code gelöst:
static void nadeln(int i) {
for (int k=0; k<i; k++)
if ((i-2)%3==0&&(k-5)%3==0)
System.out.print("*");
else
System.out.print("#");
}
public static void main(String[] args) {
Weihnacht wb = new Weihnacht(15);
}
}
Meine dringende bitte wär es, mir für mein besseres Verständnis, die einzelnen Zeilen mit Kommentaren zu versehen, da ich teilweise nicht so richtig weiß was in den Zeilen genau vor sich geht, dies aber verstehen muss und möchte.
Ich bitte um baldige Hilfe.
Mit freundlichen Grüßen
public class Weihnacht {
/**
*
*/
public Weihnacht(int height) {
//Deine For schliefe zählt bis zu deiner übergebenden Höhe.
for (int i =0 ; i < height ; i++) {
//Solange i >10 ist , soll ## ausgegeben werden.
if (i>10) {
System.out.print("##");
} else {
// Wenn i>10 nicht mehr erfüllt ist , sollen nadeln ausgegeben werden.
nadeln(i*2);
}
System.out.println("");
}
}
// übergabe vom aktuellen i wert
static void nadeln(int i) {
for (int k=0; k<i; k++)
// bsp: 5-2%3 bedeutet : 3%3 Rest ist null
// das gleiche mit k.
//Wenn also in der bedingung beide male der Rest null ist, dann * sonst #
// passiert bei 3 , 6, 9, 12 3:3 = 1 , 6:3=2 .
// bei bsp: 7:3 = 2 R:1 ..die Bedingung stimmt nicht , deswegen #
if ((i-2)%3==0&&(k-5)%3==0)
System.out.print("*");
else
System.out.print("#");
}
public static void main(String[] args) {
Weihnacht wb = new Weihnacht(15);
}
}
Erst einmal vielen Dank an dich Spin für die schnelle Antwort.
Das hat bereits an einigen Stellen weiter geholfen.
Um den Rest auch noch zu klären frag ich mal etwas spezifischer
einige Ausdrücke ab.
nadeln(i*2); ? Heißt das die Methode Nadeln wird ausgeführt und der wert i in ihr verdoppelt?
public static void main(String[] args) {
Weihnacht wb = new Weihnacht(15);
} ? Ich weiß, dass ist die auszuführende Mainmethode, aber das mit dem wb=new Weihnacht(15) ist mir nicht ganz klar. Die 15 entspricht der Höhe die ich zulasse glaube ich. Aber wodurch ist das definiert ist das eine feste Regel in Java, dass diese Zahl in Klammern hinter der Main Methode der Höhe entspricht, oder ist 15 einfach die übergebene Höhe für int height in der ersten Methode? Was wb und new bewirken weiß ich nicht.
Desweiteren würde mich interessieren, woher das Programm weiß, das mit der Variablen i die Zeilen und mit k die Spalten gemeint sind sowie mit height die Höhe? Ist das irgendwo im Programm oder sind das feste Javaregeln?
Sry wenn die Fragen etwas blöd erscheinen, aber ich hab das heute alles komplett von Null erarbeitet und möchte es einfach verstehen.
Vielen Dank im Voraus.
Aso du solltest dir die Basics mal einmal anschauen .Wenn du nicht weiß wie man ein Object erstellt , denn das mach man mit new, denn kann ich mir nicht vorstellen dass du ein weihnachtsbaum programmieren sollst. ???:L
Weihnacht wb = new Weihnacht(15);
Weihnacht ist der Klassenname.
Weihnacht() ist der Konstruktor.
Und zusammen sind sie ein Objekt. (Instanziierung)
PS : Versuch doch mal die 15 zu ändern , denn bekommst du auch eine andere Ausgabe in der Konsole.
Der Grund aus dem mir das alles nicht mehr geläufig ist ist der, dass ich die Aufgabe nacharbeite ohne den Kurs besucht zu haben (wegen Vorlesungsüberschneidungen).
Nun muss ich , um einen Schein zu erhalten die entsprechenden Kenntnisse nachweisen.
Ich habe dazu zwar ein Skript, aber eben teils noch Probleme die Theorie daraus in eine praktische Anwendung zu interpretieren.
Du hast mir jedenfalls sehr weiter geholfen.
Vielen Dank soweit erst einmal