Lernpfad:Würfelspiel in Java/Mit Strings arbeiten: Unterschied zwischen den Versionen

keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
 
(2 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
{{Navigation/Lernpfad|Ein- und Ausgabe auf der Kommandozeile|Komplexe Rechenoperationen}}
{{Navigation}}


== Zeichenketten in Java ==
== Zeichenketten in Java ==
Im Gegensatz zu den [[wikipedia:Primitive Datentypen|Primitiven Datentypen]] wie <code>byte</code>,  
Im Gegensatz zu den [[wikipedia:Primitive Datentypen|primitiven Datentypen]] wie <code>byte</code>,  
<code>int</code> oder <code>boolean</code> sind Zeichenketten in Java Objekte der
<code>int</code> oder <code>boolean</code> sind Zeichenketten in Java Objekte der
[https://docs.oracle.com/javase/8/docs/api/java/lang/String.html Klasse String]. Das bedeutete, dass jeder
[https://docs.oracle.com/javase/8/docs/api/java/lang/String.html Klasse String]. Das bedeutete, dass jeder
Zeile 14: Zeile 14:
</syntaxhighlight>
</syntaxhighlight>


{{Hint:Start}}
{{Info:Start}}
'''Hinweis''' Auf einem <code>int</code> können zum Beispiel keine Methoden aufgerufen werden, da Integer  
'''Hinweis''' Auf einem <code>int</code> können zum Beispiel keine Methoden aufgerufen werden, da Integer  
zunächst keine Objekte sind. Die Java Klassenbibliothek enthält aber auch für diese ''primitiven Datentypen''  
zunächst keine Objekte sind. Die Java Klassenbibliothek enthält aber auch für diese ''primitiven Datentypen''  
eigene Klassen. Zum Beispiel die [https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html Klasse Integer].  
eigene Klassen. Etwa die Klasse {{Java API|java.lang.Integer}}. Sie enthält hilfreiche Klassenmethoden zum Umgang mit Integern.
Sie enthält unter anderem hilfreiche Klassenmethoden zum Umgang mit Integern.
{{Info:End}}
{{Hint:End}}


<!---
Da Strings Objekte sind, kann es bei ihrer Verwendung zu unerwarteten Fehlern kommen. Ein häufiges Problem ist der  
Da Strings Objekte sind, kann es bei ihrer Verwendung zu unerwarteten Fehlern kommen. Ein häufiges Problem ist der  
Vergleich von Strings:
Vergleich von Strings:
Zeile 34: Zeile 34:


Im Gegensatz zur Erwartung wird <code>Die Strings sind unterschiedlich.</code> ausgegeben. Der Operator <code>==</code>  
Im Gegensatz zur Erwartung wird <code>Die Strings sind unterschiedlich.</code> ausgegeben. Der Operator <code>==</code>  
vergleicht bei Objekten die Objektidentität, also obe es sich um das Gleiche Objekt handelt. Oben werden zwei Objekte der Klasse
vergleicht bei Objekten die Objektidentität, also ob es sich um dasselbe Objekt handelt. Oben werden zwei Objekte der Klasse
String mit demselben Inhalt <code>Test</code> erzeugt. Da es sich aber um unterschiedliche Objekte handelt, ergibt der Vergleich
String mit dem gleichen Inhalt <code>Test</code> erzeugt. Da es sich aber um unterschiedliche Objekte handelt, ergibt der Vergleich
<code>false</code>.  
<code>false</code>.  


Zeile 48: Zeile 48:


Jetzt ist die Ausgabe wie erwartet <code>Die Strings sind gleich.</code>.
Jetzt ist die Ausgabe wie erwartet <code>Die Strings sind gleich.</code>.
 
--->
== Zeichenketten formatieren ==
== Zeichenketten formatieren ==
Zeichenketten müssen in Programmen sehr häufig zur Laufzeit des Programms aus variablen Inhalten zusammengesetzt
Zeichenketten müssen in Programmen regelmäßig zur Laufzeit des Programms aus variablen Inhalten zusammengesetzt
werden. Am Ende des Würfelspiels könnte man zum Beispiel die Nachricht ''"Spieler 1 hat gewonnen"'' bzw. ''"Spieler 2  
werden. Am Ende des Würfelspiels könnte man beispielsweise die Nachricht ''"Spieler 1 hat gewonnen"'' bzw. ''"Spieler 2  
hat gewonnen"'' anzeigen lassen. Die Nummer des Spielers ist hier variabel, je nachdem, welcher Spieler gewonnen hat.  
hat gewonnen"'' anzeigen lassen. Die Nummer des Spielers ist hier variabel, je nachdem, welcher Spieler gewonnen hat.  
Noch schöner wäre es, wenn zusätzlich der Name des Spielers angezeigt würde.
Noch schöner wäre es, wenn zusätzlich der Name des Spielers angezeigt würde.


Um mit solchen Situationen umzugehen haben sich Zeichenketten mit besonderen Formatierungszeichen und die  
Um mit solchen Situationen umzugehen, haben sich Zeichenketten mit besonderen Formatierungszeichen und die {{Java API|java.lang.String|format-java.lang.String-java.lang.Object...-|format-Methode}} etabliert. Für obige Situation könnte der String wie folgt aussehen:
[https://docs.oracle.com/javase/8/docs/api/java/lang/String.html#format-java.lang.String-java.lang.Object...- format-Methode]
etabliert. Für obige Situation könnte der String wie folgt aussehen:


<syntaxhighlight lang="java">
<syntaxhighlight lang="java">
Zeile 64: Zeile 62:


Die Formatierungszeichen beginnen jeweils mit einem <code>%</code>. Das Zeichen <code>%d</code> steht für '''''d'''ecimal
Die Formatierungszeichen beginnen jeweils mit einem <code>%</code>. Das Zeichen <code>%d</code> steht für '''''d'''ecimal
number'', das Zeichen <code>%s</code> für '''''S'''tring''. An Stelle des ersten Platzhalters soll also eine Zahl (in diesem Fall
number'', das Zeichen <code>%s</code> für '''''S'''tring''. An Stelle des ersten Platzhalters soll also eine Zahl (in diesem Fall eine Ganzzahl), an Stelle des Zweiten eine Zeichenkette eingesetzt werden. Mittels <code>format</code> kann man nun  
eine Ganzzahl), an Stelle des Zweiten eine Zeichenkette eingesetzt werden. Mittels <code>format</code> kann man nun  
beliebige Werte einfügen:
beliebige Werte einfügen:


8.581

Bearbeitungen