gpt4 book ai didi

java - 使用 if 输入字符串不起作用

转载 作者:行者123 更新时间:2023-12-02 03:00:56 40 4
gpt4 key购买 nike

我有以下问题:

用户必须在我的程序中正确输入他的名字:

  1. 名称仅包含字母、连字符“-”和空格“”
  2. 第一个字母应大写。
  3. 空格或连字符后应跟一个大写字母。

例如,程序仅应接受此表单:

“姓名”或“名字-第二名”或“名字第二名”。

第三点在我的代码中不起作用:(

我的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()

有人可以帮忙吗?

最佳答案

这看起来是使用正则表达式的好地方。下面的例子怎么样:

String name = scanner.nextLine();
if (Pattern.compile("^[A-Z][a-z]*(?:(?: |-)[A-Z][a-z]*)?$").matcher(name).find()) {
// Valid Name
}

这会根据正则表达式检查变量name,看看它是否匹配。解释正则表达式:

^ 这意味着字符串的开始。

[A-Z][a-z]* 这表示一个大写字母后跟零个或多个小写字母。

((?: |-)[A-Z][a-z]*)? 这意味着后跟一个空格或大写连字符,后跟一个可选的小写字符 - 此部分是可选的,因为组后面跟着一个 ?

$ 这意味着字符串结束。

您还可以使用更简单的String.matches(),而不是Pattern.compile().matcher()

关于java - 使用 if 输入字符串不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42372875/

40 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com