Хорошо, с вашим кодом есть несколько проблем.
Давайте обозначим номера строк, как показано ниже:
01 char[] c = new char[name.length()];
02 int j=0;
03 boolean check=true;
04 //looping through the array to find duplicates
05 for(int i=0;i<name.length()-1;i++){
06 if(name.charAt(i)==name.charAt(i+1)){
07 continue;
08 }
09 else{
10 c[j]=name.charAt(i);
11 j++;
12 check=false;
13 }
14 }
15 //printing the char array
16 if(check==true){
17 System.out.println(name);
18 }else{
19 for(int i=0;i<j+1;i++){
20 System.out.print(c[i]);
21 }
22 System.out.print(name.charAt(name.length()-1));
23 System.out.println();
24 }
Первая проблема - это комбинация строк 1, 19, 20 , 21, 22. Я знаю, что эти строки были поставлены таким образом, потому что вы не знаете длину сокращенной строки. Таким образом, вы усложняете ситуацию с for l oop, а затем получаете последний символ из исходной строки. Однако что, если ваша строка заканчивается двумя одинаковыми символами?
Если я не ошибаюсь, они будут напечатаны дважды. блоки. Ничего из этого не требуется.
Итак, давайте решим все эти проблемы одновременно.
01 StringBuilder sb = new StringBuilder();
02 int lastChar = 65537; // This char will never exist as char is 16 bits in Java.
03 for (int i = 0; i < name.length(); i++) {
04 char c = name.charAt(i);
05 if (c != lastChar) // perform int comparison so first char will be picked up.
06 {
07 sb.append(c);
08 lastChar = c; // widens c into an int.
09 }
10 }
11 System.out.println(sb.toString());
Мы можем просто решить проблему с неизвестной длиной, используя StringBuilder, ArrayList, et c. .. StringBuilder будет самым простым.
Мы также можем использовать int вместо char для отслеживания последнего обработанного символа. Мы используем здесь int вместо char, так как нам нужно, чтобы начальное состояние не соответствовало, независимо от того, какой символ встречается. Другой метод, который можно использовать здесь, - использовать Character, но он будет дороже (объект кучи), чем использование расширения int для примитива.
Попробуйте и дайте мне знать, если у вас возникнут трудности с пониманием.