Hallo zusammen!
Ich möchte folgende Aufgabe lösen:
Die Methode istName nimmt eine Zeichenkette als Argument an und gibt einen Wahrheitswert zurück, ob sie ausschließlich Buchstaben oder Bindestriche ('-') enthält. Ein Bindestrich darf aber nicht als erstes oder letztes Zeichen auftreten. Es sind keine White Spaces zugelassen, auch nicht am Anfang oder Ende. Eine leere Zeichenkette ist ein gültiger (eben leerer) Name. Z.B. ergibt ein Aufruf mit dem Argument "Lisa-", "R2-D2" oder "Johann Wolfgang" den Wert false (letzteres sind zwei Namen). Ein Aufruf mit dem Argument "Brad-Arnold" oder "ey" ergibt den Wert true.
Meine Lösung sieht folgendermaßen aus:
[CODE lang="java" title="String/Char-API Aufgabe"]
public class bindestrich{
public static boolean istName(String n){
boolean z = true;
if (n.isEmpty()){
return true;
}
if (n.indexOf(' ') == 0 | n.indexOf('-') == 0 | n.lastIndexOf(' ') == n.length() - 1 | n.lastIndexOf('-') == n.length() - 1){
return false;
}
int i = 0;
while (i<0){
char c = n.charAt(i);
if (!Character.isLetter(c) & c != '-' & c == ' '){
return false;
}
else{
return true;
}
}
return z;
}
}
[/CODE]
Leider wird bei "R2-D2" und "Johan Wolfgnag" der falsche Wahrheitswert ausgegeben. Nach langem Suchen und mehrmaligem Herumprobieren habe ich den Fehler nicht gefinden.
Könnt ihr mir hierbei vielleicht weiterhelfen und erklären wo der Fehler ist und warum das Programm mit dieser Lösung nicht richtig ausgeführt wird?
VG
Carseten
Ich möchte folgende Aufgabe lösen:
Die Methode istName nimmt eine Zeichenkette als Argument an und gibt einen Wahrheitswert zurück, ob sie ausschließlich Buchstaben oder Bindestriche ('-') enthält. Ein Bindestrich darf aber nicht als erstes oder letztes Zeichen auftreten. Es sind keine White Spaces zugelassen, auch nicht am Anfang oder Ende. Eine leere Zeichenkette ist ein gültiger (eben leerer) Name. Z.B. ergibt ein Aufruf mit dem Argument "Lisa-", "R2-D2" oder "Johann Wolfgang" den Wert false (letzteres sind zwei Namen). Ein Aufruf mit dem Argument "Brad-Arnold" oder "ey" ergibt den Wert true.
Meine Lösung sieht folgendermaßen aus:
[CODE lang="java" title="String/Char-API Aufgabe"]
public class bindestrich{
public static boolean istName(String n){
boolean z = true;
if (n.isEmpty()){
return true;
}
if (n.indexOf(' ') == 0 | n.indexOf('-') == 0 | n.lastIndexOf(' ') == n.length() - 1 | n.lastIndexOf('-') == n.length() - 1){
return false;
}
int i = 0;
while (i<0){
char c = n.charAt(i);
if (!Character.isLetter(c) & c != '-' & c == ' '){
return false;
}
else{
return true;
}
}
return z;
}
}
[/CODE]
Leider wird bei "R2-D2" und "Johan Wolfgnag" der falsche Wahrheitswert ausgegeben. Nach langem Suchen und mehrmaligem Herumprobieren habe ich den Fehler nicht gefinden.
Könnt ihr mir hierbei vielleicht weiterhelfen und erklären wo der Fehler ist und warum das Programm mit dieser Lösung nicht richtig ausgeführt wird?
VG
Carseten