我正在尝试使用下面的字符串,将其转换为数组,对数组进行排序,然后取出任何重复项。我已经到了排序的部分,但当我运行它希望删除重复项时,它似乎打印位置而不是那里的值。
这也是将空格计算为长度,这样我的长度为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);
}
}
答案 0 :(得分:0)
current
应为char
而不是int
。为了摆脱空间,如果current
不是空格,则可以打印。
答案 1 :(得分:0)
而不是使用数组你可以使用treeset ..它将有一个排序顺序,没有重复..但如果在你的场景中你需要数组在这种情况下首先你的当前变量是int而不是char而你没有删除任何duplicates.you只是打印,即使该项目没有任何重复,只有char [0]
答案 2 :(得分: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);
}
}