【问题标题】:Scanner: How do I limit the Scanner input after n characters?扫描仪:如何在 n 个字符后限制扫描仪输入?
【发布时间】:2016-06-20 08:37:51
【问题描述】:

如何限制用户在 n 个字符后输入str = key.next();?我希望str 应该只包含特定数量的字符。我对编程很陌生,任何帮助将不胜感激。

        String str;
        int k;
        int n =1000;
        String min="";
        String max="";

        Scanner key = new Scanner(System.in);
        str = key.next();
        k = key.nextInt();

        max = str.substring(0,k);
        min = str.substring(0,k);

        for (int i=0; i<str.length()-k+1; i++){

            if (str.substring(i, i+k).compareTo(max)>0){
                max = str.substring(i, i+k);
            }

            else if (str.substring(i, i+k).compareTo(min)<0){
                min = str.substring(i, i+k);
            }
        }

        System.out.println(min + "\n" + max);

【问题讨论】:

    标签: java string substring java.util.scanner


    【解决方案1】:

    一个简单的解决方法是从返回的输入字符串中获取一个最多 n 个字符长的子字符串:

    if (str.length() > n) {
      str.substring(0, n+1);
    }
    

    其中 n 是您希望 str 成为的最大长度。此代码 sn-p 将在 str = key.next();

    之后

    请注意,String.substring 包含开始索引但不包含结束索引。

    我希望这会有所帮助。

    【讨论】:

      【解决方案2】:

      不要直接传递System.in,而是传递一个包装器给System.in,实现InputStream。在这个包装器中,您可以轻松地限制返回的字符数。

      【讨论】:

        【解决方案3】:

        您可以将正则表达式传递给方法next(String pattern)(或者可能是findInLine(String))。例如:

        str = key.next(".{10}");
        

        会将接下来的 10 个字符放入 str

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-08-23
          • 2016-06-12
          • 2012-12-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多