我想知道如何将String
的所有字符分组到char [][]
。假设我有一个
String M = "x a b \n"+
"s d w \n"+
"D e f"
如何将上述String的字符分组为2d char? 该方法应按原样对字符进行分组,即:
x a b
s d w
D e f
public void groupChars (String lines)
{
char [][]temp = new char [3][3];
}
答案 0 :(得分:2)
这样做的一种方法是[虽然我使用了String数组]
public class Test1
{
public static void main(String args[])
{
String s = "x a b \n"+
"s d w \n"+
"D e f";
String[] splitParts = s.split(" ");
String[][] newArray = new String[splitParts.length/3][3];
for (int i = 0, a = 0; a < newArray.length; a++) {
newArray[a][0] = splitParts[i++];
newArray[a][1] = splitParts[i++];
newArray[a][2] = splitParts[i++];
}
System.out.println(java.util.Arrays.deepToString(newArray));
}
}
输出:
[[x, a, b], [
s, d, w], [
D, e, f]]
答案 1 :(得分:1)
您提供的整个String
M
不适合char[3][3]
数组,因为它只能包含9个char
。如果您调整大小,则可以执行以下操作 -
int i=0;
for( int row=0; row<3; row++){
for(int column=0; column<3; column++){
array[row][column]=M.charAt(i++);
}
}
答案 2 :(得分:1)
如果您事先不知道String
的大小,请在其间使用List
。您可以使用String.split
获取行,并将每行拆分为包含String.toCharArray
的字符数组:
String M = "x a b \n"+
"s d w \n"+
"D e f";
String[] rows = M.split("\n");
List<char[]> charArrayList = new ArrayList<char[]>();
for (String row: rows) {
charArrayList.add(row.toCharArray());
}
char[][] twoDimensional = charArrayList.toArray(new char[charArrayList.size()][]);
// test run to make sure we got it right
for (char[] row: twoDimensional) {
for (char column : row) {
System.out.print(column);
}
System.out.print("\n");
}
请注意,此代码会从原始String
中排除换行符,但包含空格。