Я пытаюсь взять строку ниже, преобразовать ее в массив, отсортировать массив, а затем вынуть любые дубликаты. Я попал в отсортированную часть, но когда я запускаю это, надеясь, что дубликаты будут удалены, кажется, что печатается позиция вместо ценности.
Это также подсчет пробелов как длина, давая мне длину 59 для этого.
Могу ли я помочь выяснить, что мне нужно изменить? Спасибо вам всем!
import java.util.*;
public class Challenge208 {
public static void main(String[] args) {
String numbers = "3 1 3 4 4 1 4 5 2 1 4 4 4 4 1 4 3 2 5 5 2 2 2 4 2 4 4 4 4 1";
char[] chars = numbers.toCharArray();
Arrays.sort(chars);
System.out.println(chars);
int current = chars[0];
boolean found = false;
for (int i = 0; i < chars.length; i++) {
if (current == chars[i] && !found) {
found = true;
}else if (current != chars[i]) {
System.out.print(" " + current);
current = chars[i];
found = false;
}
}
System.out.print(" " + current);
}
}
Вместо использования массива u можно использовать treeet.. Он будет иметь отсортированный порядок и не будет дубликатов.. Но если в вашем сценарии вам нужен массив, то в этом случае ваша текущая переменная будет int вместо char, и вы не удаляете ни одного дубликата. вы просто печатаете, что всякий раз, когда вы находите этот символ, даже если этот элемент не имеет дубликатов и что только для char [0]
Вы не получаете индекс номера, но его значение ascii. Для получения дополнительной информации: http://www.asciitable.com/ Но решение выглядит следующим образом:
import java.util.*;
public class Challenge208 {
public static void main(String[] args) {
String numbers = "3 1 3 4 4 1 4 5 2 1 4 4 4 4 1 4 3 2 5 5 2 2 2 4 2 4 4 4 4 1";
char[] chars = numbers.toCharArray();
char[] results = new char[10];
Arrays.sort(chars);
System.out.println(chars);
char current = chars[0];
int size = 0;
boolean found = false;
for (int i = 0; i < chars.length; i++) {
if (current == chars[i] && !found) {
found = true;
}else if (current != chars[i]) {
System.out.print(" " + current);
size++;
current = chars[i];
found = false;
}
}
System.out.print(" " + current);
System.out.print("\n"+size);
}
}
current
должен быть type char
not int
. Чтобы избавиться от пробелов, вы можете распечатать, если current
не является пространством.