【问题标题】:Limiting the length of an input to x amount of digits将输入的长度限制为 x 位数
【发布时间】:2012-10-15 00:42:18
【问题描述】:

我正在运行我创建的存储用户输入数据的 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");
    } 

【问题讨论】:

  • 必须是CLI?如果是 Swings UI,您可以使用事件轻松限制它们。

标签: java string input int variable-length


【解决方案1】:

你可以像这样使用正则表达式:^.{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]
  }

【讨论】:

  • 匹配四个字符,但不检查它们是否为数字。将点更改为 \d
【解决方案2】:

完全取决于语言,但一些方法是:

  • 使用len函数检查字符串输入;或
  • 将其转换为整数并确保其小于 10,000;或
  • ^\d{1,4}这样的正则表达式。

毫无疑问,还会有其他验证检查,例如确保字符串输入是全数字的,并且您不会尝试输入二十年后写的歌曲,但它们是您应该考虑的添加检查.

【讨论】:

    【解决方案3】:

    1) 接受用户输入并使用子字符串方法,只保存前四个字符(指定用户考虑前四个字符)。

    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 个字符编写了一个示例正则表达式。但是你可以随时改变它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-16
      • 2021-01-21
      • 1970-01-01
      • 1970-01-01
      • 2013-12-04
      • 1970-01-01
      • 2020-03-03
      • 2013-05-27
      相关资源
      最近更新 更多