扫描仪:如何在n个字符后限制扫描仪输入?

时间:2016-03-06 21:30:00

标签: java string substring java.util.scanner

如何在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);

3 个答案:

答案 0 :(得分:0)

不要直接传递System.in,而是将包装器传递给实现System.in的{​​{1}}。在此包装器中,您可以轻松限制返回的字符数。

答案 1 :(得分:0)

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

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

其中n是您想要的最大长度。此代码段将在str = key.next();

之后

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

我希望这会有所帮助。

答案 2 :(得分:0)

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

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

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