java - 将输入的长度限制为 x 位数

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

最佳答案

您可以使用正则表达式,例如:^.{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]
  }

关于java - 将输入的长度限制为 x 位数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13058300/

相关文章:

java - 如何在 Java 中不使用递归打印反向链表?

php - 如何将 Camel Case 解析为人类可读的字符串?

java - 根据枚举输入返回类

c - 如何保持比较整数对,直到用户输入没有数组的 0?

java - 读取文件 skin.json libgdx 时出错

java - Java自动生成六边形网格

Java:从线程操作非静态变量?

python,mysql,向表中插入字符串,错误1054

Firefox 输入密码时出现错误?

java - 使用 Java 8 Stream API 中的条件修改数组列表