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)
请帮忙告诉我哪里出错了。
答案 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")
怎么样?