2013-03-10 67 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

相关问题