Weihnachtsbaum -.-

Status
Nicht offen für weitere Antworten.
Also, ich hab hier folgende AUfgabenstellung...

Schreiben Sie eine Funktion, die eine Zeichenkette beliebiger Länge mit beliebiger Startposition
(beginnend von der aktuellen Cursor-Position) in eine Zeile zeichnet. Auch das verwendete Zeichen
soll frei wählbar sein. Die Funktion hat also die Form:
static void printKette (char zeichen, int start, int laenge)

Der Aufruf

printKette('a', 3, 5);

bewirkt also, dass erst zwei Leerzeichen und dann 5-mal der Buchstabe a geschrieben werden.
Testen Sie Ihre Funktion mit einem einfachen main()-Programm.

[Java]
// Weihnachtsbaum.java

public class Weihnachtsbaum
{
static void printKette (char zeichen, int start, int laenge)
{
printKette('a', 3, 5);
}

public static void main (String []args)
{
printkette();
}
}
[/Java]

Funktioniert nich. Fehlermeldung: Method printKette not found in class Weihnachtsbaum.

Ich bin am verzweifeln!
 
S

SlaterB

Gast
[Java]
public class Weihnachtsbaum
{
static void printKette (char zeichen, int start, int laenge)
{
// hier muss noch Code rein, der auch wirklich was tut, nicht nochmal printKette aufrufen..
}

public static void main (String[] args)
{
printKette('a', 3, 5);
}
}
[/Java]
 
Aber wenn ich da ein System.out.println. rein schreibe, also folgendermaßen:

[Java]
// Weihnachtsbaum.java

public class Weihnachtsbaum
{
static void printKette (char zeichen, int start, int laenge)
{
System.out.println(" aaaaa");
}

public static void main (String[] args)
{
printKette('a', 3, 5);
}
}
[/Java]

dan isses ja irgendwie blödsinn oder?
Sinn soll doch sein, dass ich bei printKette('a', 3, 5) was ändere und damit auch die ausgabe änder... Oder?!
 

faetzminator

Gesperrter Benutzer
Ich würde da eher was wie folgendes vorschlagen:
Java:
static void printKette(char zeichen, int start, int laenge) {
    while (--start > 0) { // gibt [start-1] mal ein leerzeichen aus
        System.out.print(' ');
    }
    while ((laenge--) > 0) { // gibt [laenge] mal das zeichen <zeichen> aus
        System.out.print(zeichen);
    }
    System.out.println(); // neue zeile zum schluss
}
 

ARadauer

Top Contributor
System.out.println(" aaaaa");
sollst du natürlich nicht schreiben!
Du sollst Code schreiben, der in Abhänigkeit der Paramter die ensprechende ausgabe macht...
 
Hehe, also...

Durch den Post von faetzminator bin ich nun mal soweit:

[Java]
// Weihnachtsbaum.java

public class Weihnachtsbaum
{
static void printKette (char zeichen, int start, int laenge)
{
while (--start > 0);
{
System.out.println(' ');
}
while (laenge-- > 0);
{
System.out.println(zeichen);
}
System.out.println();
}

public static void main (String[] args)
{
printKette('a', 3, 5);
}
}
[/Java]

Er gibt immerhin schon mal das 'a' aus, zwar noch nich so wie er das machen soll, aber immerhin.
Damit ich selber auf die Lösung komme, würd ich noch gern wissen warum man bei den beiden While's jeweils ein post bzw. predekrement macht....
 
S

SlaterB

Gast
weil sonst die Schleife ewig laufen würde? da wird gezählt, eine Aktion x mal wiederholt,
eine for-Schleife wäre sicher verständlicher,

ohne Schleifen, if-else, Klassen, Objekte, Methoden mit Parameter kann man kaum was programmieren
 
Bada Boom bada Bäng!

[Java]

/* Weihnachtsbaum.java */

public class Weihnachtsbaum1
{
static void printKette (char zeichen, int start, int laenge)
{
for(int i=0; i<start; i++)
System.out.print(' ');

for (int i=0; i<laenge; i++)
System.out.print(zeichen);

System.out.println();
}

public static void main(String[]args)
{
printKette('a',3,6);
}
}
[/Java]

Es funzt!
 

faetzminator

Gesperrter Benutzer
Ist aber laut deiner Vorgabe nicht korrekt. Es sollen nicht start sondern start-1 ' ' ausgegeben werden. also i auf 0 setzen. Und wo liegt da nun der Unterschied zwischen deiner und meiner Methode? Abgesehen davon, dass ich auf die zwei lokalen Variablen verzichte...
 
S

SlaterB

Gast
> Und wo liegt da nun der Unterschied zwischen deiner und meiner Methode?

das ist doch kein Wettstreit,
und nebenbei ist deine Schleife unverständlich, ++ oder -- direkt in einem Vergleich sollte man nie verwenden,
ich selber würde das nicht sofort verstehen (ob nun die Schleife zahl-mal läuft oder ein mehr oder ein weniger),
95% aller Schullehrer oder Gelegenheits-Java-Professoren ebensowenig
und 100% würde auffallen, dass das kein Anfänger selbst geschrieben hat ;)
 

Quaxli

Top Contributor
Die Lösung mit den for-Schleifen ist imho für einen Anfänger unter Umständen verständlicher.
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben