Java 应验证用户输入的年龄值是否有效,介于0和150之间。并且应使用.matches(<;…>;)方法
当用户输入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英镑,这一事实使情况变得复杂 把你的问题分解成碎片:
s.matches([0-9]{1,2}”)
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英镑,这一事实使情况变得复杂 把你的问题分解成碎片:
s.matches([0-9]{1,2}”)
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