myScanner.findWithinHorizon.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);
}
感谢。
答案 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