Java 应验证用户输入的年龄值是否有效,介于0和150之间。并且应使用.matches(<;…>;)方法

Java 应验证用户输入的年龄值是否有效,介于0和150之间。并且应使用.matches(<;…>;)方法,java,Java,当用户输入150+时,我无法打印无效年龄,当输入的年龄为负数时,我无法打印相同的打印语句。所有这些都必须使用.matches()方法完成。 这就是我所做的。正则表达式不正确 你的要求高达150英镑,这一事实使情况变得复杂 把你的问题分解成碎片: 执行空检查。如果字符串为空或null,则应该说它无效 头99年很简单:s.matches([0-9]{1,2}”) 问题是检查100-150。你不能做你发布的事情。如何使用正则表达式进行检查?第一个数字必须是1;第二位数字必须为0-5;第三位数字必须为0

当用户输入150+时,我无法打印无效年龄,当输入的年龄为负数时,我无法打印相同的打印语句。所有这些都必须使用.matches()方法完成。
这就是我所做的。

正则表达式不正确

你的要求高达150英镑,这一事实使情况变得复杂

把你的问题分解成碎片:

  • 执行空检查。如果字符串为空或null,则应该说它无效
  • 头99年很简单:
    s.matches([0-9]{1,2}”)
  • 问题是检查100-150。你不能做你发布的事情。如何使用正则表达式进行检查?第一个数字必须是1;第二位数字必须为0-5;第三位数字必须为0-9
  • 第三个数字可能是这样的图案。它需要是可选的,因为0-99之间没有

        import java.util.Scanner;
    public class validAge
    {
        public static void main(String args[])
        {
            Scanner scan = new Scanner(System.in);
            String s = scan.nextLine();
            age(s);
    
        }
        public static void age(String s)
        {
    
            if(s.matches("[0-150]{1,3}"))
            {
                System.out.println("Age is valid");
            }
            else
            {
                System.out.println("Age is NOT valid");
            }
        }
    }
    

    那个正则表达式不正确

    你的要求高达150英镑,这一事实使情况变得复杂

    把你的问题分解成碎片:

  • 执行空检查。如果字符串为空或null,则应该说它无效
  • 头99年很简单:
    s.matches([0-9]{1,2}”)
  • 问题是检查100-150。你不能做你发布的事情。如何使用正则表达式进行检查?第一个数字必须是1;第二位数字必须为0-5;第三位数字必须为0-9
  • 第三个数字可能是这样的图案。它需要是可选的,因为0-99之间没有

        import java.util.Scanner;
    public class validAge
    {
        public static void main(String args[])
        {
            Scanner scan = new Scanner(System.in);
            String s = scan.nextLine();
            age(s);
    
        }
        public static void age(String s)
        {
    
            if(s.matches("[0-150]{1,3}"))
            {
                System.out.println("Age is valid");
            }
            else
            {
                System.out.println("Age is NOT valid");
            }
        }
    }
    

    这个短脚本测试字符串数组。注释掉的行和if条件都同样有效。在您的问题中,[0-150]{1,3}将匹配仅包含0,1和5的一到三位字符串。所以,0,1,5,10,11,15,…105115150

    (\d{1,2})|(1[0-4]\d)| 150作为一组覆盖您的范围。 \d{1,2}-提供任何一位字符串或两位字符串。 1[0-4]\d-提供一个三位字符串,以1开头,然后是第二位0-4,最后是任意数字。 150-匹配150

    "1[0-5][0-9]"
    
    publicstaticvoidmain(字符串[]args)抛出ParseException、IOException
    {
    字符串b[]=
    { "0", "1", "2", "3", "150", "80", "90", "45", "100", "120", "200",
    "-3", "-4", "151", "-1" };
    for(int ai=0;ai
    此短脚本测试字符串数组。注释掉的行和if条件都同样有效。在您的问题中,[0-150]{1,3}将匹配仅包含0,1和5的一到三位字符串。所以,0,1,5,10,11,15,…105115150

    (\d{1,2})|(1[0-4]\d)| 150作为一组覆盖您的范围。 \d{1,2}-提供任何一位字符串或两位字符串。 1[0-4]\d-提供一个三位字符串,以1开头,然后是第二位0-4,最后是任意数字。 150-匹配150

    "1[0-5][0-9]"
    
    publicstaticvoidmain(字符串[]args)抛出ParseException、IOException
    {
    字符串b[]=
    { "0", "1", "2", "3", "150", "80", "90", "45", "100", "120", "200",
    "-3", "-4", "151", "-1" };
    for(int ai=0;ai
    欢迎光临:

    public static void main(String[] args) throws ParseException, IOException
    {
        String b[] =
        { "0", "1", "2", "3", "150", "80", "90", "45", "100", "120", "200",
                "-3", "-4", "151", "-1" };
        for (int ai = 0; ai < b.length; ai++)
        {
            // if(b[ai].matches("([0-9]?[0-9])|(1[0-4][0-9])|150"))
            if (b[ai].matches("(\\d{1,2})|(1[0-4]\\d)|150"))
            {
                System.out.println("Age is valid " + b[ai]);
            }
            else
            {
                System.out.println("Age is NOT valid" + b[ai]);
            }
        }
    }
    
    欢迎光临:

    public static void main(String[] args) throws ParseException, IOException
    {
        String b[] =
        { "0", "1", "2", "3", "150", "80", "90", "45", "100", "120", "200",
                "-3", "-4", "151", "-1" };
        for (int ai = 0; ai < b.length; ai++)
        {
            // if(b[ai].matches("([0-9]?[0-9])|(1[0-4][0-9])|150"))
            if (b[ai].matches("(\\d{1,2})|(1[0-4]\\d)|150"))
            {
                System.out.println("Age is valid " + b[ai]);
            }
            else
            {
                System.out.println("Age is NOT valid" + b[ai]);
            }
        }
    }
    

    您的正则表达式看起来不太正确[0-150]会逐字检查0到1到50之间的任何内容

    if(s.matches("^([0-9]|[1-9][0-9]|1[0-4][0-9]|150)$"))
    

    尝试使用这个正则表达式。希望这有帮助。

    您的正则表达式看起来不太正确[0-150]将检查0到1到50之间的任何内容

    if(s.matches("^([0-9]|[1-9][0-9]|1[0-4][0-9]|150)$"))
    

    尝试使用这个正则表达式。希望这能有所帮助。

    为什么需要正则表达式?这是一个regex学习练习吗?为什么regex是一个要求?这是一个正则表达式学习练习吗?我认为第三种模式将检查100-159之间的范围,可能不正确。没有时间检查所有细节。答案旨在引导OP以不同的方式思考。看看你的:同意,这更好。你在索引中解释得很好。我认为第三种模式将检查100-159之间的范围可能不正确。没有时间检查所有细节。答案旨在引导OP以不同的方式思考。看着你的:同意,更好。你已经很好地解释过了。我有另一个程序。如果它与if语句不匹配,则意味着打印无效,但当我运行它时,else语句和if语句同时打印出来。我不知道它的发生@programmersblock我有另一个程序。如果它匹配,则意味着打印无效与if语句不匹配,但当我运行它时,else语句和if语句同时被打印出来,我不知道它发生在@ProgrammersBlock