findWithinHorizo​​n - 它是如何工作的?

时间:2013-05-15 13:39:40

标签: java

myScanner.findWithinHorizo​​n.charAt(1)中有一段代码。我想输入一个单词,然后从该单词中获取第二个(第三个,第四个,无论如何)字母。如果有.charAt(0),它会起作用并返回第一个字母。

每当我设置不同的.charAt()时,它都不起作用:线程中的异常“main”java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:1

public static void main(String[] args) {

    char c1;

    Scanner myScanner = new Scanner(System.in);

    System.out.print("Write something: ");

    c1 = myScanner.findWithinHorizon(".", 0).charAt(1);

    System.out.println(c1);

}

感谢。

2 个答案:

答案 0 :(得分:3)

.是一个正则表达式,意思是“1个字符,无论它是什么”。所以你正在寻找下一个字符。因此返回的字符串包含一个char。因此,尝试在索引1处获取char是抛出此异常。

要获得下一个字,请使用Scanner.next()

答案 1 :(得分:1)

它找到下一次出现的正则表达式。 “”意味着接受任何下一个字符

    Scanner myScanner = new Scanner("123");
    System.out.println(myScanner.findWithinHorizon(".", 0));
    System.out.println(myScanner.findWithinHorizon(".", 0));
    System.out.println(myScanner.findWithinHorizon(".", 0));
    System.out.println(myScanner.findWithinHorizon(".", 0));

输出

1
2
3
null