2013-05-15 75 views
1

有一個myScanner.findWithinHorizo​​n.charAt(1)的代碼。我想輸入一個單詞,然後從這個單詞中得到第二個(第三,第四,任何)字母。如果有.charAt(0),它將起作用並返回第一個字母。findWithinHorizo​​n - 它是如何工作的?

每當我設置了不同的.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

如果你嘗試之前打印''c1'的charAt(1)',什麼是'c1'? – thegrinner

回答

3

.是一個正則表達式,意思是「1個字符,不管它是什麼」。所以你正在尋找下一個字符。所以返回的字符串包含一個字符。所以試圖在索引1處得到char是拋出這個異常。

要獲取下一個單詞,請使用Scanner.next()

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 
+0

我明白了。當我只想使用第二個字符('2')時,是否應該使用Scanner.next()? – slanecek

+0

否,只需調用myScanner.findWithinHorizo​​n(「。」,0);忽略返回值 –

+0

刪除「。 charAt(0)「我必須將c1轉換爲一個字符串,然後我寫」Hello「並返回」H「,我想要」E「,如何操作? – slanecek

相關問題