0
我有以下問題:輸入字符串,如果不工作
用戶必須正確地把他的名字在我的計劃:
- 名稱只能包含字母,連字符「 - 」和空格「」
- 第一個字母應該是大寫字母。
- 空白或連字符後應緊跟一個大寫字母。
僅舉例此表格由程序接受:
「名稱」或「名字-Secondname」或「名字Secondname」。
第三點沒有在我的代碼:(
我的Java代碼的工作:
public class Test {
private static Scanner scanner = new Scanner(System.in);
private static String name;
public static void main(String[] args) {
boolean check = false;
check = checkName();
System.out.println("Check= "+check);
output(check);
}
public static void output(boolean check) {
if (check == false) {
System.out.println("Fehler");
}
if(check == true) {
System.out.println("Dein Name ist: "+name);
}
}//End output()
public static boolean checkName() {
System.out.print("Name: ");
name = scanner.nextLine();
boolean check = false;
if(name.charAt(0) >= 'A' && name.charAt(0) <= 'Z') {
for(int i=1; i < name.length(); i++) {
if (name.charAt(i) >= 'a' && name.charAt(i) <= 'z') {
check = true;
} else if (name.charAt(i) == '-') {
i++;
if(name.charAt(i) >= 'A' && name.charAt(i) <= 'Z') {
check = true;
} else {
check = false;
}
} else if (name.charAt(i) == ' ') {
i++;
if(name.charAt(i) >= 'A' && name.charAt(i) <= 'Z') {
check = true;
} else { check = false;
}} else {
check = false;
break;
}
}
} return check;
}//End checkName()
有人可以幫助請
你需要正則表達式來實現它。 – DNAj
請正確縮進您的代碼。 – f1sh
擺脫那個'check'變量。你應該只是'返回false;'你當前設置的任何地方'check = false'。並在checkName方法的末尾用'return false;'替換'return check;'。在'for'循環之後添加一個'return true;'但是說實話,你的'i ++'還會有其他問題,導致你在字符串末尾運行。就像其他人所說的那樣,正則表達式可以很好地工作,但基於你編寫的代碼,這對你來說可能有點高級。 – neildo