Java findWithinHorizon-如何';它起作用了吗?

Java findWithinHorizon-如何';它起作用了吗?,java,Java,myScanner.findWithinHorizon.charAt(1)中有一个代码。我想输入一个单词,然后从这个单词中得到第二个字母(第三个、第四个,随便什么)。如果存在.charAt(0),它将工作并返回第一个字母 每当我设置不同的.charAt()时,它都不起作用:线程“main”java.lang.StringIndexOutOfBoundsException中的异常:字符串索引超出范围:1 public static void main(String[] args) { c

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

}

谢谢。

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


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

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


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

查找下一个出现的正则表达式。“.”表示取下一个字符

    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

它查找下一个出现的正则表达式。“.”表示取下一个字符

    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

如果在尝试
charAt(1)
之前打印
c1
,什么是
c1
?如果在尝试
charAt(1)
之前打印
c1
,什么是
c1
?我明白了。当我只想获取第二个字符('2',我是否应该使用Scanner.next()?不,只需调用myScanner.findWithinHorizon(“.”,0);一次并通过删除“.charAt(0)”忽略返回的值,我必须将c1转换为字符串。然后我写下“Hello”,它返回“H”。我想要“E”。怎么做?myScanner.findWithinHorizon(“.”,0)字符串e=myScanner.findWithinHorizon(“.”,0);谢谢,它可以工作。不可能将这两行“合并”为一行?我的意思是,如果我写“可能”,而我只需要第五个字符“I”,我就必须写5行代码?我明白了。当我只需要第二个字符(“2”)时,我应该使用Scanner.next()?不,只需调用myScanner.findWithinHorizon(“,”,0);一次删除“.charAt(0)”,忽略返回的值。我必须将c1转换为字符串。然后我写“Hello”,它返回“H”。我想要“E”。怎么做?myScanner.findWithinHorizon(“.”,0);字符串E=myScanner.findWithinHorizon(.”,0);谢谢,它可以工作。不可能将这两行“合并”为一行?我的意思是,如果我写了“可能”,我只需要第五个字符“I”,我就必须写5行代码?