2013-03-10 21 views
-4

我有一個while循環,應該分開一個單詞到單個字母......它的工作,但後來當我試圖檢查是否一個子字符串不存在爲null,拋出異常......Java,檢查是字符串的子串不存在

private static void seperateWord(String word) { 
    boolean running = true; 
    int count = 0; 
    while (running) { 
     if (word.substring(count, count + 1).equals("null")) { 
      running = false; 
      return; 
     } else { 
      letter[count] = word.substring(count, count + 1); 
      System.out.println(letter[count]); 
      count++; 
     } 
    } 
} 

它正確地做輸出的所有信件,直到它到達字符串的結尾,有什麼可看......如它只是不存在。它拋出該異常...

Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 4 
at java.lang.String.substring(Unknown Source) 
at Class.seperateWord(Class.java:33) 
at Class.main(Class.java:13) 

33號線是::如果(input.substring(計數,計數+ 1).equals( 「空」)){

13號線就是在那裏我調用該方法。

我輸入的文本是「ABC」

在此先感謝您的幫助!

+0

這段代碼中的input,'word'和'letter'是什麼?這不是靠近reall代碼示例的任何地方。 – 2013-03-10 16:21:30

+1

要麼你有一個無限長的「字符串」,要麼當你點擊結尾時停止。 – 2013-03-10 16:22:50

+0

我知道輸入是我爲整個班級創建的變量,我將它改爲它應該是的詞... – tyty5949 2013-03-10 16:23:37

回答

4

你試圖讓一個只有3個字符的字符串從索引3到索引4的子字符串。這就是爲什麼你會得到一個例外。

此外,input.substring(count, count + 1).equals("null")顯然永遠不會成立。一個字符的字符串如何能等於字符串"null",它有4個字符?

閱讀String類的API文檔。它有一個length()方法,它返回字符串的長度,並且您應該使用它來停止循環。它還有一個charAt()方法,它返回給定索引處的字符。

+0

感謝它的工作原理... – tyty5949 2013-03-10 16:25:24

相關問題