Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Sonstige Fragen » Zeichenausgabe » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen Zeichenausgabe
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
123michi19
unregistriert
Zeichenausgabe Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Meine Frage:
Hi Leute :-)

Wie schaffe ich es in Java denn, dass ich in der ersten Zeile ein beliebiges Zeichen ausgegeben bekomme, in der zweiten Zeile dann zwei, in der dritten drei, usw.

Probiert habe ich es natürlich selber schon einmal:

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
/*Test*/
public class Test
{
	public static void main (String[]args)
	{
		int a = 10;
		char zeichen = 'b';
		
		
		for (int i=0; i<a; i++)
			{
			System.out.println (zeichen);
			}
		
		
	}
}



Allerdings gibt mir mein Code ja (auch verständlicherweise) 9x untereinander das Zeichen aus.

Könnt ihr mir bitte weiterhelfen?

Vielen Dank :-)

Meine Ideen:
:-)
18.11.2014 20:37
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Du brauchst 2 verschachtelte Schleifen.
In der inneren gibst du das Zeichen aus (mit print), in der äußeren einen Zeilenumbruch (System.out.println()).
Bei der inneren Schleife musst du dann überlegen, wie oft du sie ausführen willst, hängt vom Zähler der äußeren Schleife ab.

__________________
Syntax Highlighting fürs Board (Link)
19.11.2014 06:57 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
123michi19
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Vielen Dank für die Antwort.

Ich merke gerade, dass ich erstmal grundlegend rauskriegen muss, wie verschachtelte Schleifen funktionieren.

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
/*Test.java*/
public class Test
{
	public static void main (String[]args)
	{	
		
		for (int i=0; i<5; i++)
			{
				for (int j=0; j<i; j++)
					
					{
					System.out.println ("Mike");
					}
			}
	}
}



Sehe ich es bei diesem Programm richtig, dass zuerst in der äußeren Schleife geprüft wird, ob i<5 ist. Da i als 0 deklariert wurde, ist die Aussage richtig. Dann geht er in die innere Schleife, setzt für j = 0 und i auch gleich 0. Da dies eine falsche Aussage ist, bricht er die innere Schleife ab und geht wieder in die äußere Schleife. Dann wird i um eins erhöht. 1 ist kleiner als 5, somit geht er in die innere Schleife, setzt für j = 1 und für i = 1. Die Aussage ist wiederum falsch, da ich j kleiner i als Voraussetzung habe.

Natürlich merke ich jetzt, dass meine Logik nicht stimmen kann, da als Ausgabe 10x das Wort Mike rauskommt.

Könntest du mir bitte kurz erklären, wie solche verschachtelten Schleifen abgearbeitet werden?

Vielen Dank
19.11.2014 18:05
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Sieht doch gar nicht so schlecht aus.
Mach aus dem println ein print und dann füge in der äußeren Schleife noch einen Zeilenumbruch hinzu, dann passt die Sache.

Zur Ablaufreihenfolge: lasse dir einfach die Werte für i und j ausgeben:
code:
1:
2:
3:
4:
5:
6:
7:
8:
for (int i=0; i<5; i++)
{
	System.out.println ("i = " + i);
	for (int j=0; j<i; j++)
	{
		System.out.println ("   j = " + j);
	}
}

gibt folgendes aus:
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
i = 0
i = 1
   j = 0
i = 2
   j = 0
   j = 1
i = 3
   j = 0
   j = 1
   j = 2
i = 4
   j = 0
   j = 1
   j = 2
   j = 3


wenn du dir eine Entwicklungsumgebung (z.B. eclipse oder NetBeans) holst, kannst du dort debuggen. Das heißt, du kannst das Programm zeilenweise durchlaufen, Variablenwerte ansehen und sogar ändern. Bei komplizierterem Code sehr hilfreich zur Fehlersuche, für dich auch, um Dinge wie die Ablaufreihenfolge einfach auszuprobieren.

__________________
Syntax Highlighting fürs Board (Link)
19.11.2014 19:46 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
123michi19
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Ich würde so gerne mit Eclipse arbeiten (es empfiehlt wirklich jeder), aber die Hochschule gibt im ersten Semester nur Hilfestellung für Proton. Ab dem zweiten Semester darf dann endlich mit Eclipse gearbeitet, oder besser gesagt, der Code geschrieben werden.

Ich hätte noch ein paar weitere, zum Thema gehörende Frage:


1. Warum bleibt das j in der zweiten verschachtelten Schleife eigentlich immer 0. Ich habe doch mit j++ den Befehl zur Erhöhung um 1 gegeben?

2. Der Grund für die Buchstabenausgabe untereinander war der, dass ich einen Weihnachtsbaum aus X-en ausgeben muss.

Ich habe den Code jetzt geschrieben, bekomme aber leider nur immer einen halben böse böse Weihnachtsbaum heraus. Entweder habe ich irgendwo einen kleinen Denkfehler oder eine falsche Klammersetzung Zunge raus

Wäre super, wenn du einen Blick auf den Code werfen könntest:

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
public class Schleife
{
	public static void main (String[]args)
		{
			
			int weihnachtsbaumhoehe = 10;
			char zeichen = 'X';
				for (int hoehe = 0; hoehe<=weihnachtsbaumhoehe; hoehe++) //Weihnachtsbaumhöhe = 10; 
					{
						System.out.println (" ");
							{	
								for (int k=weihnachtsbaumhoehe; k>=0; k--)
										System.out.print (" ");
											for (int j=0; j<hoehe; j++)
												{
													System.out.print (zeichen);
												}
													
										
							}
					}
					System.out.println (" ");
					System.out.println (" ");
		}
}



Tausend Dank für deine Hilfe :-)
19.11.2014 21:15
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Dann empfehle ich NetBeans statt eclipse, gefällt mir persönlich besser smile

Bei jedem Schleifendurchlauf von i wird der Code in der Schleife neu ausgeführt, also auch int j=0

Für die linke Hälfte des Baums brauchst du eine Schleife, bei der je nach Zählerstand entweder ein X oder ein Leerzeichen ausgegeben wird. Musst du bei Zeile 10 mit reinbringen.

Das Aufteilen eines Problems in mehere kleine macht die Lösung einfacher: wie gibt man eine Zeile aus, wenn der Baum eine Gesamtbreite von 7 hat, aber in der Zeile nur 3 Felder ausgefüllt sein sollen? Wie sieht es bei Breite b und n ausgefüllten Feldern aus? Kann man das in eine Funktion schieben?

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
public class Main {
	private static void printLine(int width, int filled) {
		for(int i = 0; i < width; i++) {
			if (i < width - filled) {
				System.out.print(" ");
			}
			else {
				System.out.print("*");
			}
		}
		for(int i = 0; i <= filled; i++) {
			System.out.print("*");
		}
		System.out.println();
	}
	
	private static void printTriangle(int width, int lines) {
		for(int i = 0; i < lines; i++) {
			printLine(width, i);
		}
	}
	
	private static void printTree(int height) {
		for(int i = 1; i <= height; i++) {
			printTriangle(height, i + 1);
		}
	}
	
	public static void main (String [] args) {
		printTree(4);
	}	
} 


Und irgendwas machst du falsch beim Einrücken. Aber mach nur so weiter, mein Monitor ist groß genug Forum Kloppe

__________________
Syntax Highlighting fürs Board (Link)

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von eulerscheZahl: 20.11.2014 14:11.

20.11.2014 14:11 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
123michi19
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Vielen Dank für deine Antwort und sorry für das viele Einrücken. Ich habe es mir mittlerweile abgewöhnt :-)
24.11.2014 20:36
Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
Informatiker Board » Themengebiete » Sonstige Fragen » Zeichenausgabe