[英]Can't figure out why I'm getting a StringIndexOutOfBoundsException
我有以下代碼
while (input.hasNextLine()) {
String line = input.nextLine();
System.out.println(line); // added to test if anything in String, and there is
int whiteSpace = 0;
int j = 0;
while (Character.isWhitespace(line.charAt(j))) {
whiteSpace++;
j++;
}
}
當我運行它時,我得到StringIndexOutOfBoundsException: String index out of range: 0
,這對我來說毫無意義。 我添加了System.out.print(line)
來測試String中是否有任何東西。 我嘗試使用較高的值初始化j
,但仍然得到相同的結果,只是另一個String index out of range: ?
。 有誰知道我為什么要得到這個例外? 對我來說毫無意義。
嘗試更多類似這樣的方法:
while(j<line.length) {
if(Character.isWhitespace(line.charAt(j))) {
whiteSpace++;
}
j++;
}
它可能更接近您要執行的操作。 如果能正常工作,那么現在擁有的東西只會在存在whiteSpace
時遞增j
,因此,即使沒有出現錯誤,也將陷入無限循環,除非您擁有包含以下內容的String
:只有空格。 上面的代碼將增加j
在每一個字符(所以你通過整個字符串一次且僅一次檢查每一個角色),但增加whiteSpace
只有當Character.isWhitespace(line.charAt(j))
返回true
。
編輯:考慮到您實際要執行的操作,請重新添加變量j
因為它會影響可讀性(因此我感到困惑)。
while(whiteSpace<line.length && Character.isWhitespace(line.charAt(whiteSpace)))
{ whiteSpace++; }
我不知道您的路線是什么,但是您應該嘗試:
while (j < line.length() && Character.isWhitespace(line.charAt(j))) {
whiteSpace++;
j++;
}
可能是因為您要遞增j ++,然后在其中使用它:
Character.isWhitespace(line.charAt(j))
如果在線上只有一個字符,即空格,那么在下一次迭代時,它將嘗試到達不存在的下一個字符。
因此,您可能必須檢查char是否不為null,然后檢查它是否為空格。 如果下一個字符為null,則制動。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.