import java.util.Scanner;
public class StringWithoutDuplicate {
public static void stringWithoutDuplicate(String s1)
{
int n = s1.length();
int i = 0;
while(i<n)
{
if(s1.charAt(i) == s1.charAt(i+1))
{
if(s1.charAt(i) == s1.charAt(n-1))
{
System.out.println(s1.charAt(i));
}
i++;
}
else if(s1.charAt(i) != s1.charAt(i+1))
{
if(s1.charAt(i) == s1.charAt(n-1))
{
System.out.println(s1.charAt(i));
}
System.out.println(s1.charAt(i));;
i++;
}
}
}
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
s.useDelimiter(",");
String s1 = s.next();
System.out.println(s1);
stringWithoutDuplicate(s1);
}
}
代码提供输出但有例外 请告诉我代码中的错误以及纠正错误的方法。 我不想改变我的代码的逻辑,所以只使用这个逻辑来解决它。
答案 0 :(得分:0)
错误:强>
i
的范围来自0 to (n-1)
,与您的字符串s1
中的字符索引范围相同。这是正确的。
但在while loop
,i = n-1
此时,s1.charAt(i+1)
与s1.charAt(n)
相同。这应该是错误的。
答案 1 :(得分:0)
public static void stringWithoutDuplicate(String s1) {
int prev = -1;
for (int i = 0, size = s1.length(); i < size; ++i) {
char c = s1.charAt(i);
if (c != prev) {
System.out.println(c);
prev = c;
}
}
}