2012-04-22 41 views
0

我最終有地圖和點(陣列)爲我的應用程序工作。快速的問題:我有一個致命的例外substring(),「stringIndexOutOfBoundException」Android SDK。字符串索引超出限制例外

一般來說,這是指什麼?

我用substring()去過一個字符串的結尾嗎?

感謝,

回答

0

是的,你路過你的字符串界限的結束一般。

Java API甚至會告訴你,...

拋出IndexOutOfBoundsException - 如果beginIndex爲負或大於此String對象的長度。

您應該習慣使用API​​。它告訴你一個方法拋出什麼異常以及爲什麼。

嘗試在嘗試子串之前打印字符串長度和值。這會幫助你看到問題。

例如...

String testing = "Hello StackOverflow"; 
System.out.println("Length of testing = " + testing.length); 
System.out.println("Value of testing = " + testing); 
testing.substring(1,2); 
+0

開始索引是否必須以1開頭,我用0作爲開始索引。子字符串的第二個參數是1(我想分析每個字符以查找特定字符),即'variable.substring(0,1);'這應該是'variable.substring(1,2);'? – 2012-04-23 00:03:47

+0

我不完全理解Java中的子串是如何工作的。在PHP中,結尾索引告訴你它將捕獲多少個字符,而不是它將停止的地方。在JAVA中,第二個參數告訴你在哪裏停止,而不是在開始索引後要拾取多少個字符。謝謝 – 2012-04-23 00:25:08

0

像官方文檔here說:

公共字符串的子串(INT的beginIndex)

返回一個新字符串,它是的一個子這個字符串。子字符串以指定索引處的字符開頭,並延伸到此字符串的末尾。

拋出:IndexOutOfBoundsException - 如果beginIndex是負數或大於此String對象的長度的 。

1
testing.substring(1,2); 

(我想分析每個字符查找特定字符)

我不會用substring()爲搶奪1長度的字符串(這僅僅是一個單個字符)而是charAt(int)的具體位置。如果您需要查看字符串中的所有字符,則可能最好先將所有字符轉換爲char[](使用toCharArray())並對其進行迭代。