Rechteck Zeichnen

paco89

Bekanntes Mitglied
hi, habe versucht ein Rechteck auf meiner konsole ausgeben zu lassen. hier mein code dazu:

Java:
public class RechteckZeichnen
{       

        static  final int  BREITE = 20;
        static  final int  HOEHE = 10;
    
    public static void main (String [] args)
    {
        
        
        int breite;
        int hoehe;
        
        for (breite = 0; breite <= BREITE ; breite++)
        {
          System.out.print("*");
        }
         for (hoehe = 0; hoehe < HOEHE ; hoehe++)
          {
              System.out.println("*");
            
              for(breite = 0; breite <= BREITE; breite++)
            {
              
              System.out.print("*");
              
            }
          
          }
        
        
    }
}

der code funktioniert. allerdings gibt es am ende in der letzten zeile und letzten spalte unten einen stern weniger aus. also ein stern fehlt. woran kann das liegen?



edit: hab erst vor kurzem angefangen zu programmieren...sprich: das sind so gesehen meine ersten versuche....;)
 

eRaaaa

Top Contributor
deallerdings gibt es am ende in der letzten zeile und letzten spalte unten einen stern weniger aus. also ein stern fehlt.


Sicher dass das dein einziges Problem ist, bzw das überhaupt korrekt ist was du schreibst? Zähle doch mal deine Sterne in der Breite und Höhe nach :D
Das passt vorne und hinten nicht, da sind eher zu viele als zu wenig :)
Es reichen. eig auch zwei Schleife für den Anfang :bae:
 

Pipi15

Mitglied
Hallo!
Habe folgendes Problem:
Habe den Viereck gezeichnet, muss aber an den Enden von jeder Zeile "--" anhängen. Habe kein Plan, wie das gehen soll... Vielleicht kann mir ja jemand helfen... Die Code sieht so aus:
Java:
class Rechteck {
	final static int length = 12;
	final static int width = 4;
	@SuppressWarnings("unused")
	private static void printRechteck (){
		
	
	for (int counter1 = 1; counter1 <= width; counter1++){
	
	for (int counter2 = 1; counter2 <= length; counter2++){
		System.out.print("#");
	}
	System.out.println ();
	}

	
	}

public static void main (String [] args)
{
    
   Carpet.printCarpet ();
}
}

Danke im Voraus!
 
S

SlaterB

Gast
du gibst schon manches aus mit System.out.print() und Co., und hast nun keine Ahnung, wie du einfach NOCH MEHR ausgeben könntest?
 

Pipi15

Mitglied
Wenn ich es so mache:
Code:
System.out.print ("--" + "#" + "--")
spuckt er mir:
Code:
--#--#--#--#--
aus.
Ich will es aber nur am Enden haben:
Code:
--####--
 
S

SlaterB

Gast
na das ist zumindest ein Versuch, der einem einen Weg zeigt der nicht geht, ein Anfang, (*)
ein bisschen wäre es schon nützlich zu verstehen was der bisherige Code mache, eher nicht von dir..?

es gibt da eine innere Schleife zum Zusammenbau der ganzen # in einer Zeile,
das bedeutet, dass es auch Code DAVOR und DANACH geben kann,
gib also vor und nach der Schleife etwas aus und schaue was dann passiert..

(*) ein Versuch ist gut, hunderte Versuche sind besser, wenn was nicht klappt ruhig überlegen ob sonst noch was irgendwie ähnlich denkbar ist,
nicht nur das Forum fragen..
 

Pipi15

Mitglied
Und wie kann ich es machen, wenn ich bei einer geraden Anzahl von Breite, jedes mal "--" haben will, und bei ungerade nur jeweils in den ungeraden:
--####--
--####--
--####--
--####--
und bei ungeraden:
--####--
####
--####--
ich dachte da an width%2 == 0
komme aber nicht viel weiter und du kannst es so toll erklären ;-)
 

Pipi15

Mitglied
for (int counter1 = 1; counter1 <= width; counter1 += 2){
System.out.print("--");

for (int counter2 = 1; counter2 <= length; counter2++){
System.out.print("#");
}
System.out.print("--");
System.out.println ();
}
spuckt mir nur:
--####--
--####--
ohne der mittleren reihe ohne "--"
es muss aber so sein, wenn ich width=3 setze:
--####--
####
--####--
???:L
 

Pipi15

Mitglied
Hey! Ich habe die Code jetzt so umgeschrieben. Gefäält mir aber noch nicht ganz :-( Könnt ihr mir mit dem Feinschliff helfen?
class Erchteck {
final static int length = 7;
final static int width =12;
private static void printRechteck (){
int counter1 = 0;
int max = length;
int min = width;
if (width > max){
max = width;
min = length;}
if (min%2 == 0)
for (counter1 = 1; counter1 <= min; counter1++){
System.out.print("--");
for (int counter2 = 1; counter2 <= max; counter2++){
System.out.print("#");
}
System.out.print("--\n");
}
else
for (counter1 = 1; counter1 <= min; counter1++){
if (counter1%2 != 0)
System.out.print("--");
if (counter1%2 == 0)
System.out.print(" ");
for (int counter2 = 1; counter2 <= max; counter2++){
System.out.print("#");
}
if (counter1%2 != 0)
System.out.print("--\n");
if (counter1%2 == 0)
System.out.print(" \n");}
}

public static void main (String [] args){
Carpet.printRechteck ();
}
}

Man soll hier Rechteck ausgeben mit "--" am Enden, woben wenn width gerade ist, müssen sie überall sein:
--####--
--####--
Und bei width ungerade nur jeweils jede ungerade:
--####--
####
--####--
Die längere seite soll immer horizontal verlaufen. Es funktionniert zwar so, aber wie kann man es schöner machen?
Danke im voraus
 
S

SlaterB

Gast
ohne Java-Tags kann man es kaum lesen, und dass hier sonst niemand antwortet kann zum nicht unerheblichen Teil daran liegen dass du kein eigenes Thema eröffnest,

wie ist das denn jetzt mit gerade/ ungerade oder geht es nicht eher um erste/ letzte Zeile?
mit if auf counter sollte doch einiges möglich sein
 

Oben