Strings und Zahlen (3)
Strings unter der Lupe
Sie kennen bereits die Methode equals(), mit der man zwei Strings auf Gleichheit testen kann. In der Tabelle finden Sie weitere nützliche Methoden der Klasse String. In der Methodenklammer steht, welches Argument oder welche Argumente man der Methode übergeben muss, hinter dem Doppelpunkt steht der Typ des Ergebnisses:
String1.equals(String2) : boolean | testet String1 auf Gleichheit mit String2 |
String1.compareTo(String2) : integer | liefert Zahl größer 0 falls String1 alphabetisch vor
String2 kommt, liefert null, wenn Strings gleich und Zahl größer 0 falls String2 alphabetisch vor String1 kommt. |
String1.contains(String2) : boolean | testet, ob String2 in String1 enthalten ist |
String.replace(char1 ,char2) : String | ersetzt jedes Vorkommen von Zeichen 1 im String durch Zeichen 2 |
String.length() : integer | Ermittelt, wie viel Zeichen der String enthält |
String.indexOf(char) : integer | Ermittelt die erste Position eines Zeichens (Die Zählung startet mit 0) |
String.charAt(integer): char | Gibt das Zeichen an der angegebenen Stelle aus. (Die Zählung startet mit 0) |
Hier ein Beispielprogramm:
import java.util.*;
public class ZahlZerlegen {
public static void main(String[] args) {
System.out.println("Wir schlachten eine Zahl");
Scanner Eingabe = new Scanner(System.in);
System.out.print("\nGib bitte eine Zahl ein: ");
String antwort = Eingabe.next();
if (antwort.equals("Zahl")) {
System.out.println("Du sollst nicht \"Zahl\"
eingeben"); // Ist Antwort das Wort "Zahl"?
}
if (antwort.contains(",")) {
// Ist String in Antwort enthalten?
antwort = antwort.replace(',','.');
// Ersetze Zeichen durch anderes
}
try {
double zahl = Double.parseDouble(antwort);
} catch (Exception e) {
System.out.println("Deine Eingabe kann ich nicht
verarbeiten");
return;
}
int l = antwort.length();
// Ermittle Länge des Strings
System.out.format("Deine Zahl hat insgesamt %2d Stellen.\n",l);
int p = antwort.indexOf('.');
// Ermittle Position eines Zeichens
int ns = l-p-1;
if (ns>1) {
System.out.format("Davon sind %2d
Nachkommastellen.\n",ns);
System.out.println("Die Einerstelle ist "+antwort.charAt(p-1));
// Ermittle Zeichen an Position
} else {
System.out.println("Die Einerstelle ist "+antwort.charAt(l-1));
// Ermittle Zeichen an Position
}
}
}
Und hier das Ergebnis: . Testen Sie weitere Varianten.
Zeichen mit Chamäleon-Charakter
Vielleicht ist es Ihnen aufgefallen: Es gibt einen Unterschied
zwischen ','
und "," .
Ersteres betrachtet Java als einzelnes Zeichen, letzteres als einen
String, der zufällig nur aus einem einzigen Zeichen besteht.
Für einzelne Zeichen besitzt Java den speziellen Variablentyp char. Zeichen
Da alle Zeichen des Computerzeichensatzes genormt und durchnummeriert sind, kann ein Zeichen sowohl die Eigenschaften von Buchstaben als auch von Zahlen annehmen. Das wird besonders verwirrend im Zusammenhang mit dem Operator +, der im Falle von Zahlen eine Addition, im Falle von Strings aber eine Verkettung (Aneinanderhängen) bewirkt.
Wenn Sie die Ergebnisse des folgenden Programms vorhersagen können, sind Sie schon recht Java-fit:
public class Charactertest {
public static void main(String[] args) {
System.out.println('3'==3);
// Drucke ob true oder false
System.out.println("3".equals('3'));
// Drucke ob true oder false
System.out.println("3".equals(3));
// Drucke ob true oder false
System.out.println((char)50);
// Drucke das Zeichen mit der Nummer 50
System.out.println((int) '3');
// Drucke die Nummer des Zeichens '3'
System.out.println("3"+"2");
// Drucke zwei verkettete Strings
System.out.println("3"+'2');
// Drucke einen String mit angehängtem Zeichen
System.out.println('3'+'2');
// ???
System.out.println("3"+2);
// ???
System.out.println(3+2);
// ???
System.out.println('3'+2);
// ???
}
}
Aufgaben