将输入长度限制为x位数

时间:2012-10-24 21:47:34

标签: java string input int variable-length

我正在运行我创建的java程序,用于存储用户输入的数据。特别是4个数组列表,分别是songName,songArtist,songYear& songAlbum。 我有“songYear”的用户输入,我只希望程序最多接受4位数字,否则会出错,怎么能实现呢? Here's a screenshot

这是我的添加条目方法的代码:

        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");
    } 

3 个答案:

答案 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函数检查字符串输入;或
  • 将其转换为整数并确保其小于10,000;或
  • ^\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个字符编写了一个示例正则表达式。但你总能改变它。