Java 无法打印字符[]数组

Java 无法打印字符[]数组,java,Java,我们如何打印一个字符数组,这样在比较之后,我就添加到字符串生成器中,然后转换成字符数组 import java.util.*; public class duplicatesremoval { public static void main(String[] args){ Scanner sc=new Scanner(System.in); String input=sc.next(); String output= "";

我们如何打印一个字符数组,这样在比较之后,我就添加到字符串生成器中,然后转换成字符数组

import java.util.*;

public class duplicatesremoval {

    public static void main(String[] args){

        Scanner sc=new Scanner(System.in);
        String input=sc.next();
        String output= "";  

        char[] str=input.toCharArray();
        char[] str1=output.toCharArray();

        StringBuilder sb = new StringBuilder(64);


        for(int i=0;i<str.length-1;i++){
            for(int j=0;j<str1.length-1;j++){
                if(str[i]!=str1[j]){
                    sb.append(str);
                    sb.append(str1);

                    char[] result = sb.toString().toCharArray();
                }

            }

        }
        System.out.println(result); // error result cannot be resolved to a variable. 
        sc.close();
    }

}
import java.util.*;
公共类副本移除{
公共静态void main(字符串[]args){
扫描仪sc=新的扫描仪(System.in);
字符串输入=sc.next();
字符串输出=”;
char[]str=input.toCharArray();
char[]str1=output.toCharArray();
StringBuilder sb=新的StringBuilder(64);

对于(int i=0;i将
char[]
声明和初始化移到循环之外(这样就有了作用域)。此外,您还需要
Arrays.toString(char[])
(因为数组不重写
Object.toString()

            // char[] result = sb.toString().toCharArray();
        }
    }
}
char[] result = sb.toString().toCharArray();
System.out.println(Arrays.toString(result));
// ...
首先:

for(int i=0;i<str.length-1;i++){
编译器会大惊小怪,因为您在if语句中声明了“result”。它不会允许这样做,因为它认为在到达System.out时,result可能不会被声明

由于您的问题不清楚,我只能修复您当前的代码,使其能够编译和运行。请使用此功能使用工作代码更新您的问题,并提供前后输入。请注意,只要“输出”没有内容,for循环将不会更改

public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        String input=sc.next();
        String output= "";  

        char[] str=input.toCharArray();
        char[] str1=output.toCharArray();
        String result = "";

        StringBuilder sb = new StringBuilder(64);


        for(int i=0;i<str.length;i++){
            for(int j=0;j<str1.length;j++){
                if(str[i]!=str1[j]){
                    sb.append(str);
                    sb.append(str1);

                    result = sb.toString();
                }

            }

        }
        char[] endResult = result.toCharArray();
        System.out.println(endResult); // error result cannot be resolved to a variable. Update: fixed
        sc.close();
    }
publicstaticvoidmain(字符串[]args){
扫描仪sc=新的扫描仪(System.in);
字符串输入=sc.next();
字符串输出=”;
char[]str=input.toCharArray();
char[]str1=output.toCharArray();
字符串结果=”;
StringBuilder sb=新的StringBuilder(64);

对于(inti=0;i来说,答案可能比您想象的要简单,但首先我想解决代码中的一些基本缺陷

System.out.println(result); // error result cannot be resolved to a variable.  
原因是您对变量
char[]result
的减容是在
if
语句的范围内声明的,不能在此范围外使用,因此,如果您将其上移一点:

public static void main(String[] args){

    Scanner sc=new Scanner(System.in);
    String input=sc.next();
    String output= "";  //<- Important to note

    char[] str=input.toCharArray();
    char[] str1=output.toCharArray();
    char[] result

    StringBuilder sb = new StringBuilder(64);


    for(int i=0;i<str.length-1;i++){
        for(int j=0;j<str1.length-1;j++){
            if(str[i]!=str1[j]){
                sb.append(str);
                sb.append(str1);

                result = sb.toString().toCharArray(); //Moved the declaration to the method scope
            }

        }

    }
    System.out.println(result); // error result cannot be resolved to a variable. 
    sc.close();
}
publicstaticvoidmain(字符串[]args){
扫描仪sc=新的扫描仪(System.in);
字符串输入=sc.next();

String output=”“;//谢谢,我确实尝试过,但我的输出不是预期的输出:sneha[]有什么想法吗?您已经在循环中声明了
result
,之后它就不可见了。谢谢。这是我的问题陈述-在不使用任何额外缓冲区的情况下删除字符串中的重复字符。没有额外的数组副本。我无法获得预期的输出。我可以使用LinkedHashSet获得输出,但此程序仍然没有执行。不客气!这只是未来问题的提示,请确保包含所需的输出以及输入的内容:)不,我无法按System.out.println(char[]x)打印字符数组。它抛出了一个错误。如前所述,它无法看到char数组
结果
,因为它是在嵌套范围内声明的,一旦程序离开该范围,它就会忘记该值,尝试复制我提供的代码示例,看看是否有效。
public static void main(String[] args){

    Scanner sc=new Scanner(System.in);
    String input=sc.next();
    String output= "";  //<- Important to note

    char[] str=input.toCharArray();
    char[] str1=output.toCharArray();
    char[] result

    StringBuilder sb = new StringBuilder(64);


    for(int i=0;i<str.length-1;i++){
        for(int j=0;j<str1.length-1;j++){
            if(str[i]!=str1[j]){
                sb.append(str);
                sb.append(str1);

                result = sb.toString().toCharArray(); //Moved the declaration to the method scope
            }

        }

    }
    System.out.println(result); // error result cannot be resolved to a variable. 
    sc.close();
}