我最終有地圖和點(陣列)爲我的應用程序工作。快速的問題:我有一個致命的例外substring()
,「stringIndexOutOfBoundException」Android SDK。字符串索引超出限制例外
一般來說,這是指什麼?
我用substring()
去過一個字符串的結尾嗎?
感謝,
我最終有地圖和點(陣列)爲我的應用程序工作。快速的問題:我有一個致命的例外substring()
,「stringIndexOutOfBoundException」Android SDK。字符串索引超出限制例外
一般來說,這是指什麼?
我用substring()
去過一個字符串的結尾嗎?
感謝,
是的,你路過你的字符串界限的結束一般。
的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);
像官方文檔here說:
公共字符串的子串(INT的beginIndex)
返回一個新字符串,它是的一個子這個字符串。子字符串以指定索引處的字符開頭,並延伸到此字符串的末尾。
拋出:IndexOutOfBoundsException - 如果beginIndex是負數或大於此String對象的長度的 。
testing.substring(1,2);
(我想分析每個字符查找特定字符)
我不會用substring()
爲搶奪1長度的字符串(這僅僅是一個單個字符)而是charAt(int)
的具體位置。如果您需要查看字符串中的所有字符,則可能最好先將所有字符轉換爲char[]
(使用toCharArray()
)並對其進行迭代。
開始索引是否必須以1開頭,我用0作爲開始索引。子字符串的第二個參數是1(我想分析每個字符以查找特定字符),即'variable.substring(0,1);'這應該是'variable.substring(1,2);'? – 2012-04-23 00:03:47
我不完全理解Java中的子串是如何工作的。在PHP中,結尾索引告訴你它將捕獲多少個字符,而不是它將停止的地方。在JAVA中,第二個參數告訴你在哪裏停止,而不是在開始索引後要拾取多少個字符。謝謝 – 2012-04-23 00:25:08