Schachbrett frage Teil2

Status
Nicht offen für weitere Antworten.
D

Drizzt281209

Gast
Huhu, da mein altes Schachbretttheme geschlossen wurde, weil man mir erfolgreich helfen hat können, mach ich hier kurz ein neues Thema auf, hoffe es ist ok.
Diese Fragen haben mit dem alten Thread sowieso nichts mehr zu tun.

Nun gut also ich muss ein Schachbrett programmieren (nur das Layout quasi) und bin schon recht weit, nur habe ich zwei Fragen, wäre nett wenn ihr mir die beantworten könnt, sonst sitz ich wieder Stunden vorm PC ohne jeglichen Erfolg... :/

Java:
   1.   
   2. public class ChessBoard {
   3.  
   4.     public static void main(String [] args){
   5.         
   6.     for (int starsAbove = 1; starsAbove <= 24; starsAbove++)
   7.     {
   8.         System.out.printf("*");
   9.     }
  10.    
  11.         System.out.printf("\n");
  12.         
  13.         
  14.     String whiteField = "  ";
  15.     String blackField = "XX";
  16.     
  17.     for (int wholeField =1; wholeField <=8; wholeField++)
  18.     
  19.     {    
  20.     for (int field = 1; field <= 8; field++)    
  21.     
  22.     if (field % 2 != 0)
  23.     {
  24.     System.out.printf(whiteField);   
  25.     }
  26.     else 
  27.     {
  28.     System.out.printf(blackField); 
  29.     }
  30.     System.out.printf("      *");
  31.     System.out.printf("\n");
  32.     }
  33.     for (int starsBelow = 1; starsBelow <= 24; starsBelow++)
  34.     {
  35.         System.out.printf("*");
  36.     }
  37.   }
  38. }

Führt zur folgenden Ausgabe:

Java:
************************
  XX  XX  XX  XX       *
  XX  XX  XX  XX       *
  XX  XX  XX  XX       *
  XX  XX  XX  XX       *
  XX  XX  XX  XX       *
  XX  XX  XX  XX       *
  XX  XX  XX  XX       *
  XX  XX  XX  XX       *
************************


Nun meine Fragen:

1)
Ich muss auf die linke Seite meines Brettes auch noch so Sterne bekommen, aber egal wo ich "System.out.print("*"); hinsetze, es kommt entweder eine Fehlermeldung oder der Stern erscheint nur in der ersten Zeile (also nebem den ersten zwei X)
Würde mich also freuen, wenn mir einer sagen könnte wo das hingehört und warum das bei mir nich ging.

2) Wie ihr sehen könnt, ist (fast am Ende meines Quellcodes) System.out.printf( "*");
Als ich die elegantere Variante wählen wollte "System.out.printf("%8d", "*"); ging das nicht.... was mach ich da falsch?
Letztlich sollen ja die linken und rechten Sterne 8 Zeichen von meinem Schachbrett entfernt sein

3) (letzte Frage)
Wie bekomm ich es gebacken, dass mein Schachbrett abwechselnd Weiß/Schwarz Schwarz/Weiß am anfang jeder Zeile ausgibt?
Ich weiß dass ich irgendwie die Kästchen multiplizieren muss, da dass Schachbrett 64 Felder hat, aber wie und wo füg ich das am besten ein?

PS: Bin noch ein ziemlicher JAVA-Anfänger....erst seit ca. nem Monat..hoffe ihr könnt mir das so erklären, dass ich das auch verstehe und nichtmehr nachfragen muss.

mfg !
 

javimka

Top Contributor
zu 1): Schreib es in die Zeile 21 und dann mach darum und um die folgende if-Abfrage { }-zeichen, damit die for-Schleife beide Befehle in jedem Durchgang ausführt. Ist im moment sowieso schlecht leserlich.

zu 2): %d will soviel ich weiss eine Zahl und keinen Stern.

zu 3): Bin mir nicht sicher, ob ich das richtig verstanden habe. Um zwei Dinge abwechslungsweise zu drucken könntest du ausnutzen, dass der Index i abwechselnd gerade und ungerade ist. Ob er gerade ist, findest du heraus mit [c]i%2==0[/c].
Du könntest also mit einem if- prüfen ob i gerade oder ungerade ist und dann entweder weiss oder schwarz ausgeben.
 
D

Drizzt2812

Gast
Meinst du so? Dann kommts aber zur falschen Ausgabe :(

Java:
	{
	for (int field = 1; field <= 8; field++)	 
	{
		System.out.printf("*");
		
	if (field % 2 != 0)
		
	{
	System.out.printf(whiteField);     
	}
	else  
	{
	System.out.printf(blackField);   
	}
	
}
	System.out.printf("       *"); 
	System.out.printf("\n"); 
	}
	
	}
 }

Ausgabe:

Java:
************************
*  *XX*  *XX*  *XX*  *XX       *
*  *XX*  *XX*  *XX*  *XX       *
*  *XX*  *XX*  *XX*  *XX       *
*  *XX*  *XX*  *XX*  *XX       *
*  *XX*  *XX*  *XX*  *XX       *
*  *XX*  *XX*  *XX*  *XX       *
*  *XX*  *XX*  *XX*  *XX       *
*  *XX*  *XX*  *XX*  *XX       *


Ok, wenn "%d" nur Zahlen liest und keine Zeichen z.B. Sterne, welcher Befehl liest dann Sterne? :/ "%x" ist ja auch nur für Hexadezimalstellen definiert :/

mfg

PS: danke für deine bisherigen Antworten
 
D

Drizzt2812

Gast
Ok danke für deine schnelle antwort, jetzt gehts =)

weißt du zufällig auch wie man mit nur einer methode 2 verschiedene ausgaben erzeugen kann?

Java:
   public static void printBorder (String number) {
 
    	 for (int numberCounter = 1; numberCounter <= 24; numberCounter++)
    	 
    	{
    		System.out.print(number);  
    	}
    	 System.out.printf("\n");
    }
		
		public static void main(String [] args) {
		printBorder("*");

siehst du, mit dieser Methode bekomm ich die 24 Sterne in der ersten Reihe hin, aber ich brauch für die untere Reihe meines Schachbretts auch nochmal 24 Sterne ....wie geht das ohne andere Parameter zu benutzen? Also ohne eine zweite Methode zu generieren?
Oder geht das nur mit einer zweiten Methode weiter unten in meinem Quelltext?

mfg
 
D

Drizzt2812

Gast
nee geht nicht

dann kommt die meldung "printborder" wird bereits verwendet

ich muss ja meinen befehl für die unteren 24 sterne ja ziemlich am schluss meines quelltextes schreiben und die methode zieht sich ja nur von zeile 1 bis 10 oder so

das was danach kommt, steht ja nich mehr in der methode drin

Java:
String whiteField = "  ";
	String blackField = "XX";
	
	for (int wholeField =1; wholeField <=8; wholeField++) 
	{
		System.out.print("*  ");
	for (int field = 1; field <= 8; field++)	 
	
		
	if (field * wholeField % 2  != 0)
		
	{
	System.out.print(whiteField);     
	}
	else  
	{
	System.out.print(blackField);   
	}
	
	System.out.printf("    *");   
	System.out.printf("\n"); 
	}
	
	}
 }

hab auch schon probiert die main methode am ende des quelltextes zu schreiben aber das geht auch nich :/
bin echt bisschen ratlos
 

javimka

Top Contributor
Die Reihenfolge der Methoden hat doch keinen Einfluss auf dein Programm. Natürlich kannst du die main Methode ans Ende verschieben. Und ich habe gemeint, dass du printBorder("*"); zwei mal aufrufst nicht definierst ;)
Mit anderen Worten, schreib doch einfach mal ganz am Ende deiner main-Methode, direkt vor der }-Klammer [c]printBorder("*");[/c] hinein.
 
D

Drizzt2812

Gast
Jo danke klappt!

man ich muss echt noch viel lernen....

is echt mühseelig und nimmt viele stunden in anspruch :/


jetzt muss ich nur noch 1 hinbekommen und zwar dass ich ein normales schachfeld hab
1 zeile weiß schwarz weiß
2 zeile schwarz weiß schwarz

wenn ich das hier schreibe
Java:
if ( (field * wholeField) % 2   != 0)

kommt das hier raus

Java:
*    XX  XX  XX  XX    *
*  XXXXXXXXXXXXXXXX    *
*    XX  XX  XX  XX    *
*  XXXXXXXXXXXXXXXX    *
*    XX  XX  XX  XX    *
*  XXXXXXXXXXXXXXXX    *
*    XX  XX  XX  XX    *
*  XXXXXXXXXXXXXXXX    *

..bin schon ne halbe stunde am überlegen ...hab auch den debugger paar mal benutzt aber normalerweise müsste es doch gehn
er durchläuft mit der multiplikation alle felder von 1 - 64 ..und ich hab doch programmiert

Java:
{
	System.out.print(whiteField);     
	}
	else  
	{
	System.out.print(blackField);   
	}

das komische ist in paar zeilen führt er es ja richtig aus..
denkt mein programm etwa es müsse nur für die ungeraden Zeilen (sprich für 1 / 3 / 5) arbeiten?

mfg
 

javimka

Top Contributor
Es funktioniert nicht auf den geraden Zeilen. Wenn wholeField 2 ist, dann wird field*wholeField immer gerade sein. Verwende ein + statt *.
 
D

Drizzt2812

Gast
man du bist echt gut

bist mein neues vorbild

nochmals danke, jetzt nerv ich dich nich länger :p


komisch dass in dem forum nur wir zwei aktiv sind ..( scheint zumidnest so )

mfg
 

javimka

Top Contributor
danke danke :D
Freut mich, wenns funktioniert. Die anderen sind schon auch aktiv, aber du wirst ja schon von mir beraten. Da wollen die anderen wohl nicht rein funken, solange ich kein Blech erzähle und halten sich diskret zurück ;)
 
D

Drizzt2812

Gast
Guten Morgen !

sooo ich hab hier noch insgesamt 2 Probleme die ich irgendwie lösen muss bis heute Abend

Ich fang erstmal mim ersten an, also:

Mein Schachbrett schaut im Moment so aus:

Java:
************************
*  XX  XX  XX  XX      *
*    XX  XX  XX  XX    *
*  XX  XX  XX  XX      *
*    XX  XX  XX  XX    *
*  XX  XX  XX  XX      *
*    XX  XX  XX  XX    *
*  XX  XX  XX  XX      *
*    XX  XX  XX  XX    *
************************

allerdings müssen da noch Buchstaben von a bis h drüber, damit es so aussieht:

Java:
************************
  a b c d e f g h
*  XX  XX  XX  XX      *
*    XX  XX  XX  XX    *
*  XX  XX  XX  XX      *
*    XX  XX  XX  XX    *
*  XX  XX  XX  XX      *
*    XX  XX  XX  XX    *
*  XX  XX  XX  XX      *
*    XX  XX  XX  XX    *
************************

Das ist jetzt nur so reingeschrieben damit ihr wisst, was ich mein, soll natürlich schöner aussehen und programmiert werden und zwar mit einer Methode printBorderText() mit dem Parameter "colums" und in der Methode soll  ich dann eine kaskadierende Fallunterscheidung machen.
Ich weiß was eine Methode ist und eine kaskadierende Fallunterscheidung, aber

Switch/case Anweisung ist doch auch eine oder?
Mein Problem ist, dass ich nicht richtig verstehe, was damit gemeint ist.

z.B.
 switch(month)

case 1:
days = 31;
break;
case 2:
days = 28;
break;
.....
case 12:
days=31;
break;


so steht das in meinen Unterlagen.
Ich weiß, dass man break; nach jedem "fertigem" Case braucht.
Mein Problem liegt nur darin, was mit dem switch (month) ist.
Soll ich da später das Monat reinschreiben oder meinen Parameternamen, den ich auch schon in der Methode hab??

Bin für jede Hilfe dankbar!

P.S. ich will ja nicht, dass ihr für mich die ganze Arbeit machen sollt, aber wenn ich wo nich weiterkomm, hab ich wirklich keinen der mir das erklären kann und progammiern kann man eben nur, wenn man es verstanden hat, sonst wird das nix..wie schon gesagt hab erst ca. nen Monat damit zu tun und das auch nur immer gute 2 Stunden in der Woche.

mfg !
 

javimka

Top Contributor
Wie genau sieht denn der Parameter colums aus? Ist das ein String[]?
Die switch-Anweisung ist nah verwandt mit der if-elseif-Anweisung.
Du gibst dem switch oben eine Variable und in jedem case wird geprüft, ob die übergebene Variable dem Case entspricht. Ein Beispiel:

Angenommen, du hast eine variable int a, dann sind folgende Code-Schnipsel äquivalent:
Java:
switch(a) {
case 1: System.out.println("a ist 1"); break;
case 2: System.out.println("a ist 2"); break;
case 5: System.out.println("a ist 5"); break;
default: System.out.println("a ist etwas anderes");
}

und

if (a==1) {
	System.out.println("a ist 1");
} else if (a==2) {
	System.out.println("a ist 2");
} else if (a==5) {
	System.out.println("a ist 5");
} else {
	System.out.println("a ist etwas anderes");
}

Allerdings sehe ich nicht so ganz, inwiefern eine switch-Anweisung bei der Beschriftung deiner Spalten hilfreich sein könnte. Wenn der Parameter colums wirklich ein String[] ist, würde ich eher mit einer for-Schleife durchiterieren und die Strings drucken.
 
D

Drizzt2812

Gast
HEy =)

glaub echt das Forum ist unbelebt....mir hat seit Vormittag keiner geantwortet :(

Ähm in der Aufgabenstellung steht das hier:

Implementieren Sie dazu eine Methode printBorderText(), die über den Parameter colums die Anzahl der Spalten empfänjgt, die Ihr Schachbrett haben soll. Diese Methode gebe als Ergebnis die Zeile des Schachbretts mit der Spaltenbeschriftung aus.
Verwenden Sie ein geeignetes Konstrukt, um die dazu erforderliche kaskadierende Fallunterscheidung umzusetzen.

.. :/
 

javimka

Top Contributor
Keiner ist dazu verpflichtet, dir zu antworten. Dieses Forum leistet absolut hervorragende Arbeit.

column ist also ein int. Wenn du davon ausgehst*, dass column nicht grösser als 26 ist, kannst du folgendes machen:
Java:
System.out.print("*  ");
for (int i=0;i<column;i++) {
	System.out.print(((char)(i+65))+" "); 
}
System.out.println("");

*(Ja ich weiss, dass deswegen Raketen explodieren)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Schachbrett frage Java Basics - Anfänger-Themen 3
B [Java] Schachbrett Frage Java Basics - Anfänger-Themen 11
A Der weise Inder und das Schachbrett Java Basics - Anfänger-Themen 8
T Auf einem Schachbrett bewegen programmieren Java Basics - Anfänger-Themen 2
D Schachbrett (8x8) programmieren Java Basics - Anfänger-Themen 3
B Schachbrett Java Basics - Anfänger-Themen 2
F Best Practice Schachbrett Läufer Java Basics - Anfänger-Themen 11
I Schachbrett aus beliebigen Strings erstellen Java Basics - Anfänger-Themen 3
J Matrix für Schachbrett Java Basics - Anfänger-Themen 6
P Das Schachbrett - Reis Problem Java Basics - Anfänger-Themen 21
H Schachbrett erkennen Java Basics - Anfänger-Themen 19
J Schachbrett mit Hilfe von while-Schleifen Java Basics - Anfänger-Themen 10
J Schachbrett zeichnen Java Basics - Anfänger-Themen 9
E einfaches Schachbrett generieren Java Basics - Anfänger-Themen 9
P Schachbrett Java Basics - Anfänger-Themen 7
P Schachbrett Spiel Nr. 01 Java Basics - Anfänger-Themen 17
P Schachbrett mit N x N Feldern Java Basics - Anfänger-Themen 11
B Schachbrett Java Basics - Anfänger-Themen 17
D schachbrett aufbauen Java Basics - Anfänger-Themen 29
I Springer auf Schachbrett Java Basics - Anfänger-Themen 18
M Schachbrett Java Basics - Anfänger-Themen 31
J Schachbrett Java Basics - Anfänger-Themen 6
J Frage zum Quellcode - Zusammhänge und Ablauf. Java Basics - Anfänger-Themen 2
D Erste Schritte Frage eines absoluten Anfängers Java Basics - Anfänger-Themen 3
Zrebna Frage zu Test-Driven Development (TDD) Java Basics - Anfänger-Themen 3
I Frage Thymeleaf -> Fehler ignorieren und mit "" ersetzen? Java Basics - Anfänger-Themen 15
I Frage Thymeleaf -> Prefix / Suffix ändern? Java Basics - Anfänger-Themen 11
D Rekursions Probleme / frage Java Basics - Anfänger-Themen 4
T Frage zu Parse Java Basics - Anfänger-Themen 2
H Frage an die Profis Java Basics - Anfänger-Themen 4
J Eine konzeptionelle Frage zu OOP Java Basics - Anfänger-Themen 3
P Frage zu Rekursion und Backtracking Java Basics - Anfänger-Themen 2
H Frage zur Ausgabe Java Basics - Anfänger-Themen 4
H Frage zu arithmetischen Operationen Java Basics - Anfänger-Themen 20
F Kurze Frage zu replace() Java Basics - Anfänger-Themen 19
JavaSchmecktLecker Polymorphie Frage zur Methodenüberschreibung Java Basics - Anfänger-Themen 21
J Frage zu einem "Taschenrechner" code Java Basics - Anfänger-Themen 9
B Erste Schritte Frage zu Instanzierung und Referenzen Java Basics - Anfänger-Themen 8
DoubleM Runtime.getRuntime().exec Frage Java Basics - Anfänger-Themen 2
J Eine theoretische Frage zur Praxis - JPanel oder Canvas Java Basics - Anfänger-Themen 5
O Frage: Formaler Typbezeichner? Java Basics - Anfänger-Themen 3
I BlueJ Queue Frage für Klausur Java Basics - Anfänger-Themen 2
N Verständnis Frage zu Variablen Java Basics - Anfänger-Themen 3
N Spezielle frage zum Comparator Java Basics - Anfänger-Themen 6
L Frage zum Array Java Basics - Anfänger-Themen 1
A Frage zum UML Design Java Basics - Anfänger-Themen 1
I Hilfe bei Klausur Frage Java Basics - Anfänger-Themen 8
izoards Drucken Frage zu FAQ Beitrag Java Basics - Anfänger-Themen 2
J Frage zu meinem Code (OOP) Java Basics - Anfänger-Themen 4
sserio Split() -> Regex Frage. Java Basics - Anfänger-Themen 7
A OCA Study Guide: 2. Frage aus Kapitel 3 Java Basics - Anfänger-Themen 9
sserio Date Library Frage Java Basics - Anfänger-Themen 9
Max246Sch Frage zu Währungsrechner Code Java Basics - Anfänger-Themen 2
sserio Frage zu HashMaps Java Basics - Anfänger-Themen 20
sserio Frage zu Threading - Multithreading Java Basics - Anfänger-Themen 2
sserio Frage zu Lambda Ausdrücken Java Basics - Anfänger-Themen 7
sserio Frage zu BigInteger Java Basics - Anfänger-Themen 1
D Frage bzgl. Enum-Handhabung Java Basics - Anfänger-Themen 16
xxx12 Frage Java Basics - Anfänger-Themen 2
I Generelle Frage zu Mikroservices (Spring Boot?), Docker... Java Basics - Anfänger-Themen 7
R Frage zu Methoden (Rückgabewert u. ohne.) Java Basics - Anfänger-Themen 2
A Frage zur programmierung Java Basics - Anfänger-Themen 12
M Frage zur Methode split der Klasse String Java Basics - Anfänger-Themen 32
R Input/Output Frage zu Java IO Java Basics - Anfänger-Themen 6
M Frage zu printWriter Java Basics - Anfänger-Themen 5
C Frage zu OLSMultipleLinearRegression Java Basics - Anfänger-Themen 31
KogoroMori21 Frage zum Euklidischen Algorithmus Java Basics - Anfänger-Themen 11
S Verständnis-Frage zu einer HÜ? Java Basics - Anfänger-Themen 1
F Frage betreff Programm mit dem man C++-Code in JAVA-Code übersetzen lassen kann Java Basics - Anfänger-Themen 2
L Frage zur Ticket Maschine Java Basics - Anfänger-Themen 1
J Frage zu OOP-Klassendiagramm Java Basics - Anfänger-Themen 8
OSchriever Frage zu Compiler Java Basics - Anfänger-Themen 8
H Frage zu Throw Exception Java Basics - Anfänger-Themen 2
TimoN11 Frage zu Java-Vererbung (Cast) Java Basics - Anfänger-Themen 5
Bademeister007 Hallo Leute ich hab eine Frage zur ArrayList Java Basics - Anfänger-Themen 8
F Frage betreff Programmierbücher zu Lagerverwaltung als Konsolenprogramm Java Basics - Anfänger-Themen 3
dieter000 Kurze Frage kann mir ejmand kurz diesen Code erklären, bzw wie man die zeilen erklärt und so Java Basics - Anfänger-Themen 1
I String.split regex Frage Java Basics - Anfänger-Themen 2
N Best Practice Frage zum MVC-Pattern Java Basics - Anfänger-Themen 2
dieter000 Frage zu einem Beispiel... Java Basics - Anfänger-Themen 5
J Frage zum Loggen Java Basics - Anfänger-Themen 18
J Methoden Frage: Array-Werte in anderer Methode ändern Java Basics - Anfänger-Themen 4
Zrebna Frage zum "Referenzen-konzept" in Java Java Basics - Anfänger-Themen 8
JD_1998 Array-Position aus einer Methode in einer anderen ausgeben (Kurze Frage) Java Basics - Anfänger-Themen 2
marcooooo Frage zu bestimmten Beispiel Java Basics - Anfänger-Themen 31
NeoLexx equals()-Methode Verständnis Frage anhand Code Beispiel Java Basics - Anfänger-Themen 22
N Input/Output Eine Frage über system.out.println. Java Basics - Anfänger-Themen 10
B Erste Schritte Learning Coding (!) Frage an erfahrene Programmierer. Java Basics - Anfänger-Themen 23
M konzeptuelle Frage: In welcher Klasse definiert man am Besten Methoden, die die Kommunikation mit dem User regeln? Java Basics - Anfänger-Themen 8
B Frage zum Code verständnis im Resultat Java Basics - Anfänger-Themen 10
C Exception-Frage Java Basics - Anfänger-Themen 3
J Eine Frage zur Schreibweise == ? : Java Basics - Anfänger-Themen 3
S Frage des Designs Java Basics - Anfänger-Themen 1
JavaTalksToMe Extends/Implements Frage Java Basics - Anfänger-Themen 3
pkm Frage zu Servletfunktion Java Basics - Anfänger-Themen 0
B Frage zur Währungsumrechnung Java Basics - Anfänger-Themen 3
S Allgemeine Frage über Generics und Vererbungen Java Basics - Anfänger-Themen 5
Kirby.exe Frage zur Verwendung von Interfaces Java Basics - Anfänger-Themen 6
D Frage zu Strings einer Exception Java Basics - Anfänger-Themen 4
L Wie frage ich ab, ob in einem Array, Werte doppelt vorkommen? Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben