我有点卡在这个程序的第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;
}
}
}
}
实际上,所有的验证都可以使用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,这样我就可以把它读入向量
``公共静态void main(字符串[]args){ } ``
在映射上分配一些默认值 我知道我需要在地图中添加值 问题是我的循环不起作用。我需要从地图中添加value2,基于从那里的位置或从地图中添加value2
问题内容: 我在此代码块中有一个错误。调试器提示原因是这一行代码 该代码的作用是寻找和之间的匹配。我必须逐一检查secretWord字母的长度,如果有匹配的字母,则返回true。如果不是,则返回false …但是当假定只是返回false时,程序崩溃…我猜想这与该行有关,但不知道到底是什么 附带说明一下,我将这段代码正确地完成了,将getSecretWorld()方法分配给String以便我可以使用