问题描述
我正在尝试将所有字符从字符串转换为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已被初始化。我该如何解决?
解决方法
您只能将char
替换为char
,或者将CharSequence
替换为CharSequence
(因为这是为String#replace
定义的唯一重载),而不是带有char
的{{1}}。使用String
将第一个参数转换为String
(即CharSequence
)将解决此问题。
String.valueOf
,
如果允许您使用Java 8流API,则方法simplify
可能如下所示:
- 使用流
reduce
操作在输入数组中加入字符串 - 使用带正则表达式的String
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