当前位置: 首页 > 知识库问答 >
问题:

带有if的输入字符串无效

宋典
2023-03-14
  1. 名称只包含字母、连字符“-”和空格“”
  2. 第一个字母应为大写字母。
  3. 空白或连字符后应紧跟大写字母。

例如,程序只应接受以下表格:

“name”或“firstname-secondname”或“firstname 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()

有人能帮忙吗?

共有1个答案

南宫凯康
2023-03-14

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

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

这将检查变量name与正则表达式是否匹配。解释正则表达式:

^这表示字符串的开始。

 类似资料:
  • 所以,我知道这可能是一个非常愚蠢的问题,我是一个初学者,试图学习Java基础知识,我有一个字符串数组的问题,我不太明白。当我尝试将单词输入到字符串数组中,并且单词的数量由用户设置(例如5)时,我总是可以少输入一个单词(例如4而不是5)。我的代码在下面。

  • 嘿,我用oracle DB和Iron Python一起使用,但我在使用包含字符“‘”的字符串时遇到了麻烦,就像Mc'Donalds中一样。(我知道它在寻找结尾')从用户输入中接受字符串,我想按原样将其添加到我的数据库中,这意味着不省略或更改任何字符。我怎么做?

  • 问题内容: 我在JSF支持bean中具有以下方法: 我在数据表中显示此: 但是我得到以下异常: 它是怎么引起的,我该如何解决?\ 问题答案: 所以, 导致此: 您是否正在运行您认为正在运行的代码?的参与在堆栈跟踪指示是 实际上 像一个数组。数组值只能通过像整数索引来获得,但你用字符串访问它作为导致了这一例外。 确保返回,而不是,并且已将的正确版本声明为托管Bean。

  • 主要内容:字符串的输出,字符串的输入其实在《 C语言输入输出》一章中我们已经提到了如何输入输出字符串,但是那个时候我们还没有讲解字符串,大家理解的可能不透彻,所以本节我们有必要再深入和细化一下。 字符串的输出 在C语言中,有两个函数可以在控制台(显示器)上输出字符串,它们分别是: puts():输出字符串并自动换行,该函数只能输出字符串。 printf():通过格式控制符输出字符串,不能自动换行。除了字符串,printf() 还能输

  • 问题内容: 给定一个字符串“ aabbcdeeeeggi”并且k = 3,代码应该找到最长的子字符串,最多包含k个唯一字符。对于上述输入,它应该是“ deeeeggi”。 这是针对Python中问题的一种出色的O(n)解决方案。我正在用Java实现。但是我没有得到所有输入的期望输出。 这是输出: 我无法捕获错误所在。任何帮助将非常感激。谢谢 问题答案: 您的实现无法按预期方式运行,因为原始的pyt

  • 问题内容: 所以,我有一个问题真的困扰我。我有一个用Java开发的简单解析器。这是相关代码: 输入文件是CSV文件,文件的第一项是整数。当我开始解析时,我立即得到这个异常: 我检查了文件,它的第一个值确实为1(该字段中没有其他字符),但仍然收到消息。我认为这可能是由于文件编码所致:它是UTF-8,带有Unix终端。该程序在Ubuntu 14.04上运行。欢迎寻找问题的任何建议。 问题答案: 您在该