我正在尝试将所有字符从字符串转换为2D字符数组。详细信息如下:
我的代码:
import java.util.*;
public class Main
{
public static void main(String[] args) {
//System.out.println("Hello World");
Scanner sc=new Scanner(System.in);
int n,l=0; //as you can see, n is initialized
String x="";
char[][] arr1=new char[10][10];
if(sc.hasNextInt())
n=sc.nextInt();
for(int i=0;i<n;i++){
if(sc.hasNextLine())
x=sc.nextLine();
//char[] arr=x.toCharArray();
if(x.length()==n){
for(int j=l;j<arr1.length;j++){
for(int k=0;k<arr1.length;k++){
arr1[j][k]=x.charAt(i);
}
x="";
++l;
break;
}
}
}
System.out.println(arr1);
}
}
错误:
error: variable n might not have been initialized
for(int i=0;i<n;i++){
这是什么?变量n已被初始化。我该如何解决?
答案 0 :(得分:4)
您只能将char
替换为char
,或者将CharSequence
替换为CharSequence
(因为这是为String#replace
定义的唯一重载),而不是带有char
的{{1}}。使用String
将第一个参数转换为String
(即CharSequence
)将解决此问题。
String.valueOf
答案 1 :(得分:0)
如果允许您使用Java 8流API,则方法simplify
可能如下所示:
reduce
操作在输入数组中加入字符串replaceAll
方法,将所有先前检测到的字符替换为空文字:public static String simplify(String... arr) {
return Arrays
.stream(arr)
.reduce("", // empty accumulator
(s1, s2) -> s1 + (s1.isEmpty() ? s2 : s2.replaceAll("[" + s1 + "]", ""))
);
}
测试:
System.out.println(simplify("abcdef", "fghij"));
System.out.println(simplify("abcdef", "fghij", " jklmn"));
输出
abcdefghij
abcdefghij klmn