For-Loop Frage

Diskutiere For-Loop Frage im Allgemeine Java-Themen Bereich.
B

Basics_Java

Hey Leute,
ich versuche ein Brief zu erstellen.
Der Bindestrich sollte auf der Höhe des "+" sein, bekomme dies irgendwie nicht hin.

Code:
public class UmschlagDrucken {
    
    // Breite und Abstand
    public static int breite = 80;
    public static int hoehe = 10;
    public static int abstand = 40;


    public static void main(String[] args) {
        
        
        for(int i =0; i < 1; i++) {
            System.out.println("+");
            
            for(int b = 0; b<=breite;b--) {
                System.out.println("-");
            }
        }
            for(int a=1; a<hoehe; a++) {
                System.out.println("|");
            }
                for(int c = 11; c < 12; c++) {
                    System.out.println("+");
                }
                
            }
        }
 
J

JustNobody

Wenn Du nach dem "+" keinen Zeilenumbruch haben willst, dann solltest Du print statt println verwenden.
println = print line -> fügt am Ende noch einen Zeilenumbruch hinzu.
 
B

Basics_Java

Java:
public static void main(String[] args) {
        
        
        for(int i =0; i < 1; i++) {
            System.out.print("+");
            
            for(int b = 2; b<=breite;b++) {
                System.out.print("-");
            }
            for(int d =1; d<=1;d++) {
                System.out.println("+");
            
                for(int e=1; e<hoehe; e++) {
                    System.out.print("|");
                }
            }
        }
            for(int a=1; a<hoehe; a++) {
                System.out.println("|");
            }
                for(int c = 11; c < 12; c++) {
                    System.out.print("+");
                    for(int f = 0; f<breite;f++) {
                        System.out.print("-");
                    }
                        for(int g=1;g<=1;g++) {
                            System.out.print("+");
                        }
                    }
                }
                
            }
So weit bin ich jetzt gekommen. Die hintere Lücke kann ich nicht mit dem Symbol "|" füllen, dass es vom oberen + zum unteren + geht :/
 
MoxxiManagarm

MoxxiManagarm

Na zwischen 2 Trennstrichen (zumindest wenn ich dich richtig verstehe)
 
MoxxiManagarm

MoxxiManagarm

Dann habe ich dich richtig verstanden. In einer Zeile musst du Leerzeichen zwischen den Bindestrichen printen, ganz genauso wie du die Bindestriche an der oberen und unteren Kante machst
 
mihe7

mihe7

Eine Zeile der Länge n besteht aus 1 Trennzeichen, gefolgt von n-2 Leerzeichen, gefolgt von 1 Trennzeichen.
 
mihe7

mihe7

Wenn Du Dein Rechteck aus #8 nimmst, dann hast Du zwei Arten von Zeilen: solche, die das Rechteck nach oben und unten begrenzen und "innere" Zeilen.

Ganz grob wäre der Algorithmus also:
Code:
zeichne Begrenzung
wiederhole (h-2)-mal {
    zeichne innere Zeile
}
zeichne Begrenzung
Das Zeichnen einer(!) inneren Zeile der Breite b ist dann etwas wie
Code:
zeichne "|" (ohne Zeilenumbruch)
wiederhole (b-2)-mal {
    zeichne " " (ohne Zeilenumbruch)
}
zeichne "|" (mit Zeilenumbruch)
 
B

Basics_Java

Wenn Du Dein Rechteck aus #8 nimmst, dann hast Du zwei Arten von Zeilen: solche, die das Rechteck nach oben und unten begrenzen und "innere" Zeilen.

Ganz grob wäre der Algorithmus also:
Code:
zeichne Begrenzung
wiederhole (h-2)-mal {
    zeichne innere Zeile
}
zeichne Begrenzung
Das Zeichnen einer(!) inneren Zeile der Breite b ist dann etwas wie
Code:
zeichne "|" (ohne Zeilenumbruch)
wiederhole (b-2)-mal {
    zeichne " " (ohne Zeilenumbruch)
}
zeichne "|" (mit Zeilenumbruch)
Ich habe es versucht ... leider kein Erfolg entweder habe ich ein Zeilenumbruch zu viel oder ich weiß nicht wie ich die for schleife dafür "|" ansetze..
 
MoxxiManagarm

MoxxiManagarm

Du hast doch immer das gleiche Muster.

1. Obere Begrenzungslinie
Zeichne das +
Zeichne in einer Schleife das -
Zeichne das +
Zeilenumbruch

2. Body
Tue Wiederholt folgendes
Zeichne das |
Zeichne in einer Schleife Leerzeichen
Zeichne das |
Zeilenumbruch

3. Untere Begrenzungslinie
siehe Obere Begrenzungslinie

Mach eins nach dem anderen
 
A

advanced_java

Es empfiehlt sich das in weitere Methoden aufzuteilen:
Java:
	String ntimes(int n, char c) {
		return java.nio.CharBuffer.allocate(n).toString().replace('\0', c);
	}

	void printBrief(int w, int h) {
		String spaces = ntimes(w - 2, ' ');
		String line = ntimes(w - 2, '-');
		for (int y = 0; y < h; y++) {
			if (y == 0 || y == h - 1) {
				System.out.print('+');
				System.out.print(line);
				System.out.println('+');
			} else {
				System.out.print('|');
				System.out.print(spaces);
				System.out.println('|');
			}
		}
	}
 
B

Basics_Java

Du hast doch immer das gleiche Muster.

1. Obere Begrenzungslinie
Zeichne das +
Zeichne in einer Schleife das -
Zeichne das +
Zeilenumbruch

2. Body
Tue Wiederholt folgendes
Zeichne das |
Zeichne in einer Schleife Leerzeichen
Zeichne das |
Zeilenumbruch

3. Untere Begrenzungslinie
siehe Obere Begrenzungslinie

Mach eins nach dem anderen
Java:
public static void main(String[] args) {
        for(int a=0;a<1;a++) {
            System.out.print("+");
        }
            for(int b=0;b<breite;b++) {
                System.out.print("-");
            }
                for(int c=0;c<1;c++) {
                    System.out.print("+");
                }
            
    System.out.println();
        for(int d=0;d<hoehe;d++) {
            System.out.println("|");
        }
            for(int e=0;e<1;e++) {
                System.out.println("");
            }
                for(int f=0;f<1;f++) {
                    System.out.println("|");
                    
            }
                System.out.println();
                
        }
        
    
    }
Das mit dem Body kriege ich nicht hin..
 
J

JustNobody

Wozu machst du eine Schleife, wenn du ein einzelnes Zeichen brauchst?

Ein einzelnes + bekommst du durch einen einzelnen Aufruf.

Und wenn du hoehe mal eine Zeile willst, dann muss die ganze Zeile in den Body der Schleife.

Und wenn du breite mal das - hattest, dann willst du auch genau so oft das Leerzeichen.
 
MoxxiManagarm

MoxxiManagarm

Java:
public static void main(String[] args) {
        for(int a=0;a<1;a++) {
            System.out.print("+");
        }
            for(int b=0;b<breite;b++) {
                System.out.print("-");
            }
                for(int c=0;c<1;c++) {
                    System.out.print("+");
                }
           
    System.out.println();
        for(int d=0;d<hoehe;d++) {
            System.out.println("|");
        }
            for(int e=0;e<1;e++) {
                System.out.println("");
            }
                for(int f=0;f<1;f++) {
                    System.out.println("|");
                   
            }
                System.out.println();
               
        }
       
   
    }
Das mit dem Body kriege ich nicht hin..
Ein Leerzeichen, so wie Leertaste. NICHT ein leerer String. Schleifen mit einer Iteration kannst du übrigens getrost weglassen und nur den Aufruf direkt verwenden
 
B

Basics_Java

Ein Leerzeichen, so wie Leertaste. NICHT ein leerer String. Schleifen mit einer Iteration kannst du übrigens getrost weglassen und nur den Aufruf direkt verwenden
Java:
//Obere Begrenzung
            System.out.print("+");
        
            for(int b=0;b<breite;b++) {
                System.out.print("-");
            }
            System.out.print("+");
            System.out.println();
            
            //Body
            System.out.print("|");
            for(int c=0;c<breite;c++) {
                System.out.print(" ");
            }
            System.out.println("|");
            //System.out.println();
            System.out.print("|");
            for(int d=0;d<breite;d++) {
                System.out.print(" ");
            }
            System.out.println("|");
            System.out.print("|");
            for(int e=0;e<breite;e++) {
                System.out.print(" ");
            }
            System.out.println("|");
            //System.out.println();
            System.out.print("|");
            for(int f=0;f<breite;f++) {
                System.out.print(" ");
                
            }
            System.out.println("|");
            System.out.println("|");
            //System.out.println();
            System.out.print("|");
            for(int j=0;j<breite;j++) {
                System.out.print(" ");
                
            }
            System.out.println("|");
            System.out.println("|");
            System.out.println("|");
            //System.out.println();
            System.out.print("|");
            for(int k=0;k<breite;k++) {
                System.out.print(" ");
                
            }
            System.out.println("|");
Also ich bezweifle, dass dies zum richtigen führt :D
 
Thema: 

For-Loop Frage

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben