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

循环和字符方法

松献
2023-03-14

我有点卡在这个程序的第3部分,我正在工作。以下是要求:

>

  • 程序将提示用户输入有效的姓氏,直到输入有效的姓氏为止。一个姓氏如果只包含字母和空格,它以一个字母开始和结束,并且不包含2个连续的空格,那么它是有效的。

    import java.util.Scanner;
    
    public class Program06
    {
        public static void main(String[] args)
        {
            Scanner stdIn = new Scanner(System.in);
    
            boolean legal = false;
            boolean space = false;
    
            String name;
            String yearStr = null;
            String licenseNumber;
            int yearInt;
    
            // while legal is false, loop
            while (!legal)
            {
                System.out.print("Enter a last name: ");
                name = stdIn.nextLine();
    
                legal = true; // legal will be true, until illegal input found
    
                if (Character.isLetter(name.charAt(0)) 
                    && Character.isLetter(name.charAt(name.length() - 1)))
                {
    
                    // if first and last characters are letters, check rest, else is
                    // illegal
    
                    for (int i = 0; i < name.length() && legal; i++)
                    {
                        // walking through name, checking each letter.
                        // if legal = false, will break loop
    
                        if (Character.isLetter(name.charAt(i)))
                        {
                            space = false; // resetting space
                        }
                        else if (name.charAt(i) == ' ')
                        {
                            // making sure not 2 spaces in a row
                            if (!space)
                            {
                                space = true;
                            }
                            else
                            {
                                legal = false;
                            }
                        }
                        else
                        {
                            legal = false;
                        }
    
                    }
                    else
                    {
                        legal = false;
                    }
                }
    
                legal = false;
    
                while (!legal)
                {
                    System.out.println("Enter year of birth: ");
                    yearStr = stdIn.nextLine();  
    
                    if (yearStr.matches("19[\\d][\\d]"))
                    {
                        legal = true;
                    }
                }
    
                legal = false;
    
                while (!legal)
                {
                    System.out.println("Enter driver's license number: ");
                     licenseNumber = stdIn.nextLine();  
    
                    // Here
                    if (licenseNumber.matches("\\p{Lu}"))
                    {
                        legal = true; 
                    }
                }
            }
        }
    
  • 共有1个答案

    谷梁宜
    2023-03-14

    实际上,所有的验证都可以使用string.matches()来完成,它使用regex来断言输入具有某种格式。

    验证姓氏:

    input.matches("^(?!.*  )(?i)[a-z]([a-z ]*[a-z])?")
    

    这允许单个字母的边缘大小写为姓氏,这在技术上满足了要求。否定前瞻用于检查没有两个相邻的空格。(?i)使正则表达式不区分大小写,采取大小写的方式。

    input.matches("19\\d\\d")
    
    input.matches("[A-Z]\\d(\\d\\d-\\d\\d){3}")
    

    验证驾驶执照内容:

    license.charAt(0) == lastName.toUpperCase().charAt(0) &&
      license.charAt(8) == yearOfBirth.charAt(2) &&
      license.charAt(10) == yearOfBirth.charAt(3);
    
     类似资料:
    • direction(方向) 定义动画的方向。 Accepts Infos 'normal' 正方向动画 'reverse' 反方向动画 'alternate' 往返 anime({ targets: '.dir-normal', translateX: 250, easing: 'easeInOutSine' }); anime({ targets: '.dir-reverse'

    • 你现在可以创建不同类型的数组,并且也知道了“字符串”和“字节数组”是相同的东西。接下来,我们要更进一步,创建一个包含字符串的数组。我也会介绍第一个循环结构,for循环来帮我们打印出这一新的数据结构。 这一章的有趣之处就是你的程序中已经有一个现成的字符串数组,main函数参数中的char *argv[]。下面这段代码打印出了所有你传入的命令行参数: #include <stdio.h> int m

    • 对于以下字符串,大小输出不正确。为什么会这样?我该如何解决? 我试着逐字符遍历str,这样我就可以把它读入向量

    • 在映射上分配一些默认值 我知道我需要在地图中添加值 问题是我的循环不起作用。我需要从地图中添加value2,基于从那里的位置或从地图中添加value2

    • 问题内容: 我在此代码块中有一个错误。调试器提示原因是这一行代码 该代码的作用是寻找和之间的匹配。我必须逐一检查secretWord字母的长度,如果有匹配的字母,则返回true。如果不是,则返回false …但是当假定只是返回false时,程序崩溃…我猜想这与该行有关,但不知道到底是什么 附带说明一下,我将这段代码正确地完成了,将getSecretWorld()方法分配给String以便我可以使用