1

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);

}

谢谢。

4

2 回答 2

3

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

要获取下一个单词,请使用Scanner.next().

于 2013-05-15T13:45:51.603 回答
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
于 2013-05-15T13:51:36.167 回答