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();
}