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