Java字符串超出界限异常

时间:2015-05-27 06:32:13

标签: java string

import java.util.*;
import java.lang.*;
public class pro19 
{
    public static void main(String[] args)
    {
        Scanner in = new Scanner(System.in);
        String word;
        System.out.print("Enter word: ");
        word = in.nextLine();
        StringBuffer s = new StringBuffer(word);
        int l = word.length();
        for(int i = 1; i<=l; i++)
        {
            for(int j = i+1; j<=l; j++)
            {
                if(s.charAt(i)==s.charAt(j))
                {
                    s = s.deleteCharAt(j);

                l--;
            }
            else
                continue;
        }
    }
    System.out.println("Word after deletion of duplicate letters: "+s);
}

}

我写了这个程序,删除重复的字符作为学校作业。 但每当我运行它时,我得到以下输出(运动是输入):

输入单词:exercise

Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 8
    at java.lang.StringBuffer.charAt(Unknown Source)
    at pro19.main(pro19.java:19)

请帮忙告诉我哪里出错了。

3 个答案:

答案 0 :(得分:0)

你写

for(int i = 1; i<=l; i++)

您可以像这样写

 for(int i = 0; i<=l-1; i++)
    {
        for(int j = i+1; j<=l-1; j++)
        {
            if(s.charAt(i)==s.charAt(j))
            {
                s = s.deleteCharAt(j);

            l--;
        }
        else
            continue;
    }

答案 1 :(得分:0)

纠正你的循环条件:

 for(int i = 1; i < l; i++)
            {
                for(int j = i+1; j < l; j++)
                {

答案 2 :(得分:0)

word.replaceAll("(.)\\1+", "$1")怎么样?