Linie zeichnen

Diskutiere Linie zeichnen im Allgemeine Java-Themen Bereich.
F

Fabian04088

könnt ihr mir dabei helfen ich darf keine math.abs oder so benutzen

* Draws a horizontal line from (xStart, y) to (xEnd, y) (both end points included), using the character c.
* If xEnd is less than xStart, then this function does nothing.
* If the line starts or ends outside the plottingArea, then this function only plots the part laying inside the canvas.
*
* @param xStart x coordinate of start point of line.
* @param xEnd x coordinate of end point of line
* @param y y coordinate of line
* @param c character to draw the line with
*/
public static void plotHorizontalLine(int xStart, int xEnd, int y, char c)
 
F

Fabian04088

for (int i = 0; i < xEnd; i++)
ich konnte leider nur die for schleife schreiben was anderes kann ich mir nicht mehr denken :(
 
F

Fabian04088

ach ja und er will das ich disem code benutzen muss aber habe keine Ahnung wie und wo ich den Code da benutzen kann


public static boolean plotChar(int x, int y, char c) {
if ((x < 0 || x > plottingArea.length) || (y < 0 || y > plottingArea[x].length)) {
return false;
} else {
plottingArea [x][y] = c;
return true;
 
mihe7

mihe7

Fabian04088 hat gesagt.:
for (int i = 0; i < xEnd; i++)
ich konnte leider nur die for schleife schreiben was anderes kann ich mir nicht mehr denken :(
...
ach ja und er will das ich disem code benutzen muss aber habe keine Ahnung wie und wo ich den Code da benutzen kann
Die Methode plotChar zeichnet das durch c gegebene Zeichen an der mit x und y gegebenen Position des Zeichenbereichs, sofern der Punkt in diesem Bereich liegt. Die Methode kannst Du mit den entsprechenden Parametern aufrufen, um zu zeichnen.

Beschreib doch mal in Worten, was Du machen würdest.
 
F

Fabian04088

vor die Länge der Linie musst ich halt die Punkte zeichnen und die zeichne ich mit der Funktion plotchar muss da in den Klammern halt noch die Koordinaten angeben Die x Koordinate ändert sich, die y nicht aber ich komm da halt irgendwie nicht weiter
 
mihe7

mihe7

aber ich komm da halt irgendwie nicht weiter
Wir sind ja schon dabei aber ein wenig Einsatz wirst Du schon bringen müssen :)

vor die Länge der Linie musst ich halt die Punkte zeichnen und die zeichne ich mit der Funktion plotchar muss da in den Klammern halt noch die Koordinaten angeben
Richtig, um an einem Punkt ein Zeichen zu zeichnen musst Du plotChar die Koordinaten und das Zeichen mitgeben.

Nehmen wir an, Du möchtest an stelle (x,y) ein '*' zeichnen, wie sähe der Code dazu aus?
 
F

Fabian04088

puh das weiss ich eben nicht so ganz bin gerade seit 3 Wochen dran in Programmieren und kenne mich da nicht so gut aus wie ich anfangen kann :(
Wir sind ja schon dabei aber ein wenig Einsatz wirst Du schon bringen müssen :)


Richtig, um an einem Punkt ein Zeichen zu zeichnen musst Du plotChar die Koordinaten und das Zeichen mitgeben.

Nehmen wir an, Du möchtest an stelle (x,y) ein '*' zeichnen, wie sähe der Code dazu aus?
 
mihe7

mihe7

Eine Methode rufst Du auf, indem Du ihren Namen nennst und in Klammern die Parameter angibst. Eine Anweisung beendest Du mit einem Semikolon, d. h. um ein '*' an Position x, y zu zeichnen kannst Du (weil Dir Dein Lehrer die Methode gegeben hat), einfach schreiben: plotChar(x, y, '*');.

Andere Frage: was glaubst Du, macht der folgende Code?
Java:
int x = 5;
while (x < 10) {
    x++;
}
 
F

Fabian04088

die schleife geht so lange weiter
Eine Methode rufst Du auf, indem Du ihren Namen nennst und in Klammern die Parameter angibst. Eine Anweisung beendest Du mit einem Semikolon, d. h. um ein '*' an Position x, y zu zeichnen kannst Du (weil Dir Dein Lehrer die Methode gegeben hat), einfach schreiben: plotChar(x, y, '*');.

Andere Frage: was glaubst Du, macht der folgende Code?
Java:
int x = 5;
while (x < 10) {
    x++;
}
die schleife geht so lange weiter bis x die 9 erreicht hat glaube ich mal


und danke noch mal :)
 
mihe7

mihe7

die schleife geht so lange weiter bis x die 9 erreicht hat glaube ich mal
Der Rumpf der Schleife wird wiederholt, so lange x < 10 gilt. D. h. der Rumpf wird bis inkl. x == 9 wiederholt. Die Schleife endet, wenn die Bedingung < 10 nicht mehr gilt, d. h. die Schleife endet (EDIT: in diesem konkreten Fall), wenn x == 10 gilt. Wenn Du willst, dass der Rumpf auch noch für die 10 ausgeführt wird, dann schreibst Du entweder x < 11 oder x <= 10.

OK, jetzt nimmst Du den Code und schreibst ihn um und zwar so, dass der Rumpf für jedes x zwischen xStart und xEnd (inkl.) ausgeführt wird.
 
F

Fabian04088

for (int i = 0; i < xEnd; i++) {
int x = xStart;
while(x <= xEnd){
x++;
}
plotChar(x, y, 'x,y');



}
}

würde es dann so aussehen?
 
mihe7

mihe7

Nein. Vergiss erstmal die for-Schleife, Du sollst erstmal nur meinen Code umformulieren, d. h.
Java:
int x = xStart;    // initialisiere x mit xStart
while(x <= xEnd){  // so lange x <= xEnd gilt, wiederhole den Block {
    x++;           //     erhöhe x um 1
}                  // } Ende des Blocks
hätte schon gereicht. Ich hab mal ein paar Kommentare eingefügt. Dein plotChar ist auch falsch, schau Dir mal Deinen dritten Parameter und meinen an.

Wenn Du jetzt nur diesen Code betrachtest: an welcher Stelle wäre es denn nun sinnvoll, das plotChar einzufügen?
 
mihe7

mihe7

Ja, nachdem Du wiederholt einen "Punkt" zeichnen willst, bietet sich die Schleife an. Aber wo in der Schleife wäre die richtige Stelle? Überleg Dir, was Schritt für Schritt abläuft.
 
F

Fabian04088

int x = xStart;
while(x <= xEnd) {
x++;
plotChar(x, y, 'x,y);
}
so würde ich es mal denken
 
F

Fabian04088

achssoooo dankeee jetzt habe ich es ICH BEDANKE MICH SEHR BEI DIR OH GOTT!!! DANKESCHÖÖNNN:)))))
 
F

Fabian04088

int x = xStart;
while (x <= xEnd) {
plotChar(x, y, 'x,y'); x++;


}

so sieht es jetzt aus uff danke sehr :) :) :) :D :D :D
 
mihe7

mihe7

Du bist aber noch nicht fertig. Mal abgesehen davon, dass der dritte Parameter von plotChar immer noch falsch ist :)
 
mihe7

mihe7

Und weil der Aha-Effekt schon eingetreten ist:
Java:
int x = xStart;
while (x <= xEnd) {
    plotChar(x, y, '*');
    x++;
}
ist äquivalent zu:
Java:
for (int x = xStart; x <= xEnd; x++) {
    plotChar(x, y, '*');
}
Jetzt musst Du den Spaß nur noch richtig in die Methode einbauen (beachte die Parameter, die Du bekommst)
 
F

Fabian04088

java.lang.ArrayIndexOutOfBoundsException: Index 80 out of bounds for length 80
was heisst dieser Fehler
 
J

JustNobody

Du hast ein Array der Länge 80 (length 80) und versuchst auf den Index 80 zuzugreifen.

Da der Index bei 0 anfängt hat ein Array der Länge 80 aber nur die Elemente 0 bis 79.
 
F

Fabian04088

for (int i = 0; i < xEnd; i++) {


}
int x = xStart;
while (x <= xEnd) {
plotChar(x, y, c);
x++;


}
}
 
mihe7

mihe7

Was soll die leere for-Schleife am Anfang? Und wo hast Du die Exception behoben?
 
F

Fabian04088

while (x <= xEnd) {
plotChar(x, y, 'c`');
x++;


}
}
so gibt das Programm mir ein Fehler:(
 
mihe7

mihe7

Natürlich, da fehlt ja auch die Deklaration und Initialisierung von x: int x = xStart;.

Zeig doch mal die komplette Methode.
 
F

Fabian04088

public static void plotHorizontalLine(int xStart, int xEnd, int y, char c) {

int x = xStart;
while (x <= xEnd) {
plotChar(x, y, c);
x++;


}
}
 
mihe7

mihe7

Ja, das ist prinzipiell in Ordnung (ohne die unsinnige weil leere for-Schleife), aber Du musst noch die Sonderfälle abfangen, die in plotChar nicht berücksichtigt wurden. Sonst erhältst Du ggf. die Exception, die Du schon im Kommentar #24 angesprochen hast.

Schau Dir nochmal Deine Exception und den Code an, den Du für plotChar bekommen hast und die Erklärung von @JustNobody an. Damit solltest Du erkennen, wo es zu Problemen kommen könnte...
 
Thema: 

Linie zeichnen

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben