[Java] Schachbrett Frage

back4ever

SlotBauer
ID: 10467
L
20 April 2006
28.195
1.246
Hi

Bin blutiger Java Anfänger
und hänge bei meiner 10. und letzten Aufgabe
bei dem Schachbrett

So sieht es aus:

Code:
****       ****      ****      ****      ****      ****         
****       ****      ****      ****      ****      ****
****       ****      ****      ****      ****      ****
       ****       ****      ****      ****      ****       ****
       ****       ****      ****      ****      ****       ****
       ****       ****      ****      ****      ****       ****
****       ****      ****      ****      ****      ****         
****       ****      ****      ****      ****      ****
****       ****      ****      ****      ****      ****
       ****       ****      ****      ****      ****       ****
       ****       ****      ****      ****      ****       ****
       ****       ****      ****      ****      ****       ****
****       ****      ****      ****      ****      ****         
****       ****      ****      ****      ****      ****
****       ****      ****      ****      ****      ****
       ****       ****      ****      ****      ****       ****
       ****       ****      ****      ****      ****       ****
       ****       ****      ****      ****      ****       ****
****       ****      ****      ****      ****      ****         
****       ****      ****      ****      ****      ****
****       ****      ****      ****      ****      ****
       ****       ****      ****      ****      ****       ****
       ****       ****      ****      ****      ****       ****
       ****       ****      ****      ****      ****       ****

Habe ähnlich wie bei den anderen Aufgaben angefangen
so angefangen

PHP:
public class Aufgabe10
{
	public static void main(String[] args)
	
	{
		int stern = 1;
		int leertaste = 1;
		
	
			for (stern = 1;stern < 5; stern++) // Schleife läuft 4x durch
			{
				System.out.print("*");
			}								   // Hier wird der Block geschlossen
			
			for (leertaste = 1;leertaste < 5; leertaste++) // Hier fängt die Schleife wieder an
			{
				System.out.print(" ");	       // 4x die Leertaste
			}
   									
   	}		
}

Ich will zuerst das ihr mir auf die Sprünge helft
ob ich richtig angefangen habe oder nicht
nicht gleich lösen,ausser ich packs echt nicht
dann aber bitte auch mit Kommentaren :)

Sorry nochmal für meine totale N00b Frage
bin erst in der 2.Java Woche habt Geduld mit mir ;)

Achja es muss mit der "for" Schleife gearbeitet werden
es muss doch einen Befehl geben der das immerwieder
in einer gewissen Reinfolge wiederholen lässt...

Danke!
 
Zuletzt bearbeitet:
Ich will zuerst das ihr mir auf die Sprünge helft
ob ich richtig angefangen habe oder nicht
Du gehst falsch ran.

Überleg dir folgendes:
  • Das Schachbrett ist unterteilt in Linien
  • Jede Linie besteht aus 3 Zeilen identischen Text
  • die Linien fangen abwechselnd mit " "-Feld / "*"-Feld an
  • in jeder Linie wiederholt sich 6x das Muster (leeres Feld/gefülltes Feld) bzw. (gefülltes Feld/leeres Feld)
P.S.
Sorry nochmal für meine totale N00b Frage
bin erst in der 2.Java Woche habt Geduld mit mir ;)
Die Aufgabe hat nichts mit Java, sondern nur mit Denken zu tun.
Könnte ich sonst hier antworten ? <- *kein Java kann* ;)
 
Zuletzt bearbeitet:
Kor. zu ICQ:
Was ist denn deine Aufgabe *g* ?

Und eine for-Schleife wiederholt einen Sequenz doch solange bis der 2.te Parameter erreicht ist ;)

Meine Aufgabe ist es das Schachbrett zu erstellen ;)
d.h in der ersten Zeile brauche ich 4 Sterne
die sich immer nach 4 Leertasten wiederholen
und das ganze 24 Zeilen lang

hab mal so angefangen
PHP:
public class Aufgabe10
{
	public static void main(String[] args)
	
	{
		int stern = 1;
		int leerschritt = 1;
		
			for(stern=1;stern<5;stern++)
			{
				for(leerschritt=1;leerschritt<5;leerschritt++)
				
					System.out.print("*");
					
			
					System.out.print(" ");
			
				
			}
	}
}

liege ich damit schon richtig ?
oder ist es komplett falsch
weil der leerschritt z.b nicht 5x ausgeführt wird
obwohl ich den oben definiert habe
liegt er nicht in der Schleife oder?
 
@PatrickB:
Das war ja wohl sowas von vorbei. Wenn du nichts zu sagen hast, bitte nicht auf "Antworten" drücken :roll:

@back4ever:
So sollte es schematisch aussehen:
Code:
Setze Flag true = erstes Feld gefüllt
Für(jede Zeile; 8x)
{
  Für(jede Textzeile; 3x)
  {
    Für(jedes Feld; 12x)
    {
      Wenn(Flag)
        Ausgabe "****"
      Sonst
        Ausgabe "    "
      Kehre Flag um
    }
  }
  Kehre Flag um, da neue Zeile
}
 
also ich würde da nochmal nachdenken was
Code:
for(leerschritt=1;leerschritt<5;leerschritt++)
bedeutet ;)
von 1 bis <5 sind es 4! ganze Schritte;)

als "leerzeichen" würde ich \t nehmen das sollte 4 Zeichen entsprechen, dann würde ich eine Zeile in einen String speichern und immer wieder ausgeben, für die versetzten Zeilen braucht man halt dann noch nen \t vorne dran



cu Felix
 
wegen nochmal 2 Minuten arbeit machst du Pause?!?
muss man nicht verstehen, oder?
sagmal hast du bevor du angefangen hast java zu lernen schonmal programmiert?


cu Felix
 
Warum eigentlich so umständlich immer * auszugeben gib doch abwechselnd **** 4xspace aus, bis zum Ende der Reihe und geh dann weiter, sind imo 2 einfache for schleifen ;)
 
Warum eigentlich so umständlich immer * auszugeben gib doch abwechselnd **** 4xspace aus, bis zum Ende der Reihe und geh dann weiter, sind imo 2 einfache for schleifen ;)

hoffe das es dem trainer nicht zu einfach ist
könnte ja auch gleich nur mit system.out.println("*"); arbeiten :biggrin:
gut da gibts keine Schleife....
Ich versuchs dann nachher

F77: Was du nicht verstehst ist das ich 2 Kinder habe
hat also mit der Anstrengung des proggens nichts zu tun :LOL:
edit: nein bin blutiger Anfänger
 
F77: Was du nicht verstehst ist das ich 2 Kinder habe
hat also mit der Anstrengung des proggens nichts zu tun :LOL:
edit: nein bin blutiger Anfänger

Ach so, Kinder sind natürlich immer wichtiger;)

Das du Anfänger bist erschwert dir die Sache natürlich zusätzlich...
Na dann wünsche ich dir noch viel Spass bei der Aufgabe!


cu Felix
 
hoffe das es dem trainer nicht zu einfach ist
könnte ja auch gleich nur mit system.out.println("*"); arbeiten :biggrin:
gut da gibts keine Schleife....
Ich versuchs dann nachher

[...]

Es ist doch eine Schleife nur gibts du nicht immer jedes Zeichen einzeln aus, sondern immer eine Zeichenkette.

Wenn ich das auf die schnelle mal duchdacht habe spartst du dir damit 1 Schleife.

Aber probiere beides eben aus ;), Zeichen für Zeichen ausgeben(Schleife), solange bis Reihe voll ist (Schleife) bis alle Reihen gefüllt sind (Schleife)
 
Jo, nur weil b4e hatte gesagt, wenn er String s= "****" ausgibt anstatt char c= '*' wäre es keine Schleife mehr (hatte ich verstanden), aber es ist definitv eine ;).
Naja, wenns Spaß macht, kann man
PHP:
System.out.print("****");
sicherlich auch durch
PHP:
for(int i=0;i<4;i++,System.out.print("*"));
ersetzen.
(obige Syntax in Java erlaubt ?)
 
nun hat es mir jemand in nem anderen Forum
so gelöst das ich es nicht verstanden habe
wollte eigentlich auch keine Lösung...

PHP:
public class Aufgabe11a
{
	
		public static void main(String[] args) 
		{
      
      int quad = 4; // So groß ist ein Feld (höhe und breite)
      int fields = 8; // So viele Felder sind in einer Reihe/hat das Feld Reihen
      char black = '*'; // Zeichen für Schwarz
      char white = ' '; // Zeichen für Weiß
      char printChar = black; // char der gezeichnet werden soll
      boolean startWithBlack = true; // hier wird angegeben ob die Zeile mit mit Schwarz oder Weiß anfangen soll
      for (int i = 0; i < fields * quad; i++) { // läuft so oft durch, wie es Zeilen gibt (Felder * Höhe der Felder)
         if (((i / quad) % 2) == 0) { // Überprüft ob mit schwarz oder weiß angefangen werden soll
            startWithBlack = true;
         }
         else {
            startWithBlack = false;
         }
         for (int j = 0; j < fields * quad; j++) { // läuft so oft durch, wie es Zeichen in einer Zeile gibt (Felder * Breite der Felder)
            if (((j / quad) % 2) == 0) { // überprüft ob ein weißes oder schwarzes zeichen gemalt werden soll
               if (startWithBlack) {
                  printChar = black;
               }
               else {
                  printChar = white;
               }
            }
            else {
               if (startWithBlack) {
                  printChar = white;
               }
               else {
                  printChar = black;
               }
            }
            System.out.print(printChar); // Zeichnet den Charakter
         }
         System.out.println(); // Zeichnet eine neue Zeile
      }
   }
}

nur gibts da Begriffe welche wir offiziell noch nicht gelernt haben
das heisst es muss auch einfacher gehen :-?
 
So hatte ich es gestern abend auch gelöst 2 Schleifen und die Abfrage womit man anfangen muss, das % Zeichen ist der Modulo Operator, es berechnet dir den Rest einer Division. Nunja, was kannst du denn bisher? Obwohl heute is doch dein Kurs?!