Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 获取方形框作为输出_Java_String_Char - Fatal编程技术网

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
非常感谢。但是我们可以坚持使用字符串类并执行操作吗?请提问。非常感谢。但是我们可以坚持使用字符串类并执行操作吗?请提问。