我正在运行我创建的java程序,用于存储用户输入的数据。特别是4个数组列表,分别是songName,songArtist,songYear& songAlbum。 我有“songYear”的用户输入,我只希望程序最多接受4位数字,否则会出错,怎么能实现呢?
这是我的添加条目方法的代码:
public void addEntry(){
String newName = ui.getString("Enter the name of the track");
songName.add(newName);
String newArtist = ui.getString("Who performs this track");
songArtist.add(newArtist);
String newAlbum = ui.getString("What album is this track from");
songAlbum.add(newAlbum);
System.out.print("What year was the track released? ");
int newYear=input.nextInt(4);
songYear.add(newYear);
System.out.println("\n" + "Thank you, " +songName.get(songName.size()-1) + " has been added to the library.");
System.out.println("\n" + "Press 2 to view your library." + "\n");
}
答案 0 :(得分:2)
您可以使用正则表达式:^.{4}$
仅在用户输入4位数时表示 - 返回true,否则返回false
为确保用户使用4个数字YYYY
,请使用以下内容:
^(?=[1-9]+)\d{4}$
确保年份为1或2,后跟三个数字;在这种情况下,有效范围是1000-2999
^(?=[1-2][0-9]+)\d{4}$
最后你的代码应该是:
if(inputUserStr.matches("^(?=[1-2][0-9]+)\d{4}$")){
// do some stuff
}
else{
// print error about valid input form [YYYY]
}
答案 1 :(得分:0)
完全取决于语言,但有些方法是:
len
函数检查字符串输入;或^\d{1,4}
这样的正则表达式。毫无疑问,还会有其他的验证检查,例如确保字符串输入是全数字的,并且您不会尝试输入将来二十年写的歌曲,但是它们会添加您应该考虑的检查
答案 2 :(得分:0)
1)接受用户的输入并使用子字符串方法,仅保存前四个字符(指定用户考虑前4个字符)。
2)如果不是4个字符,您可以要求用户重新输入值:
Scanner sc = new Scanner(System.in);
String a = sc.next();
if (a.matches("...."))
{
System.out.print(a);
}
else
{
System.out.print("Input again:" );
a = sc.next();
}
我为4个字符编写了一个示例正则表达式。但你总能改变它。