Java 获取方形框作为输出
我试图按字母顺序打印字符串的不同字符,这是其他两个字符串串联的结果。我试过了,但是我得到了小的方形盒子作为输出。这是我的密码:Java 获取方形框作为输出,java,string,char,Java,String,Char,我试图按字母顺序打印字符串的不同字符,这是其他两个字符串串联的结果。我试过了,但是我得到了小的方形盒子作为输出。这是我的密码: String s1 = "xyaabbbccccdefww", s2 = "xxxxyyyyabklmopq"; String s = s1+s2; char[] c = s.toCharArray(); java.util.Arrays.sort(c); char[] res = new char[c.length]; res[0]=c[0]; for(int i =
String s1 = "xyaabbbccccdefww", s2 = "xxxxyyyyabklmopq";
String s = s1+s2;
char[] c = s.toCharArray();
java.util.Arrays.sort(c);
char[] res = new char[c.length];
res[0]=c[0];
for(int i = 0; i<c.length ; i++) {
boolean isDuplicate=false;
for(int j = 0 ; j<c.length; j++) {
if(i!=j && c[i]==c[j]) {
isDuplicate=true;
break;
}
}
if(!isDuplicate) {
res[i+1]=c[i];
}
}
System.out.println(String.valueOf(res));
您在结果中获得框的原因是,您仅在某些索引中将一些字符分配到
res
数组中,这取决于时i
的值!isDuplicate
条件为真
此外,在检测重复字符的逻辑中还有一个缺陷。请参阅下面的更正。您可以使用StringBuilder来存储结果,而不是使用字符数组,如下所示:
String s1 = "xyaabbbccccdefww", s2 = "xxxxyyyyabklmopq";
String s = s1+s2;
char[] c = s.toCharArray();
java.util.Arrays.sort(c);
StringBuilder result = new StringBuilder();
for(int i = 0; i<c.length ; i++) {
boolean isDuplicate=false;
for(int j = i+1 ; j<c.length; j++) {
if(c[i]==c[j]) {
isDuplicate=true;
break;
}
}
if(!isDuplicate) {
result.append(c[i]);
}
}
System.out.println(result.toString());
字符串s1=“xyaabbccccdefww”,s2=“xxxxyyyyabklmopq”;
字符串s=s1+s2;
char[]c=s.toCharArray();
java.util.Arrays.sort(c);
StringBuilder结果=新建StringBuilder();
对于(int i=0;i您在结果中获得框的原因是您仅在某些索引中将一些字符分配到res
数组中,这取决于i
的值,当!isDuplicate
条件为true时
此外,检测重复字符的逻辑中存在错误。请参阅下面的更正。您可以使用StringBuilder来存储结果,而不是使用字符数组,如下所示:
String s1 = "xyaabbbccccdefww", s2 = "xxxxyyyyabklmopq";
String s = s1+s2;
char[] c = s.toCharArray();
java.util.Arrays.sort(c);
StringBuilder result = new StringBuilder();
for(int i = 0; i<c.length ; i++) {
boolean isDuplicate=false;
for(int j = i+1 ; j<c.length; j++) {
if(c[i]==c[j]) {
isDuplicate=true;
break;
}
}
if(!isDuplicate) {
result.append(c[i]);
}
}
System.out.println(result.toString());
字符串s1=“xyaabbccccdefww”,s2=“xxxxyyyyabklmopq”;
字符串s=s1+s2;
char[]c=s.toCharArray();
java.util.Arrays.sort(c);
StringBuilder结果=新建StringBuilder();
对于(int i=0;i这是您实现所需的方式:
String getDistinctCharacters(String input) {
String output = "";
for (int i = 0; i < input.length(); i++) {
if (output.indexOf(input.charAt(i)) < 0) {
if ((output.length() == 0) || (output.charAt(0) > input.charAt(i))) {
output = input.charAt(i) + output;
} else {
boolean found = false;
for (int j = 0; (!found) && (j < output.length()); j++) {
if (output.charAt(j) < input.charAt(i)) {
found = true;
output = output.substring(0, j) + input.charAt(i) + output.substring(j + 1);
}
}
if (!found) output += input.charAt(i);
}
}
}
return output;
}
String getDistinctCharacters(字符串输入){
字符串输出=”;
对于(int i=0;iinput.charAt(i))){
输出=输入。字符(i)+输出;
}否则{
布尔值=false;
对于(int j=0;(!found)&&(j
这是实现您想要的目标的方法:
String getDistinctCharacters(String input) {
String output = "";
for (int i = 0; i < input.length(); i++) {
if (output.indexOf(input.charAt(i)) < 0) {
if ((output.length() == 0) || (output.charAt(0) > input.charAt(i))) {
output = input.charAt(i) + output;
} else {
boolean found = false;
for (int j = 0; (!found) && (j < output.length()); j++) {
if (output.charAt(j) < input.charAt(i)) {
found = true;
output = output.substring(0, j) + input.charAt(i) + output.substring(j + 1);
}
}
if (!found) output += input.charAt(i);
}
}
}
return output;
}
String getDistinctCharacters(字符串输入){
字符串输出=”;
对于(int i=0;iinput.charAt(i))){
输出=输入。字符(i)+输出;
}否则{
布尔值=false;
对于(int j=0;(!found)&&(j
非常感谢。但是我们可以坚持使用字符串类并执行操作吗?请提问。非常感谢。但是我们可以坚持使用字符串类并执行操作吗?请提问。