我需要根据给定的String制作2D数组。行数将是String中的多个单词,列数将是String中最长的单词的长度(单词之间用空格分隔)。如果在字符串中有2个字母的单词(例如“ is”)并且列号为8,则需要用空格填充其余单元格。
例:
字符串:“ aaa bbbb ccccc dddddd”
数组:stringArray [4] [6]
输出:{{a,a,a,'','','},{b,b,b,b,'','},{c,c,c,c,c,''} ,{d,d,d,d,d,d}}
代码是:
public static void TextToArray(String s) {
int rowCount = 0;
int columnCount = 0;
int tempColumn = 0;
//getting array dimensions and creating an array
for (int i = 0; i < s.length(); i++) {
tempColumn++;
if (s.charAt(i) == ' ') {
rowCount++;
if (tempColumn > columnCount) {
columnCount = tempColumn;
}
tempColumn = 0;
}
}
char[][] stringArray = new char[rowCount + 1][tempColumn];
//filling array - not completed
for (int i = 0; i < stringArray.length ; i++) {
for (int j = 0; j < stringArray[i].length ; j++) {
if(s.charAt(j) == ' '){
for (int k = j; k < stringArray[i].length - j ; k++) {
stringArray[i][j] = ' ';
}
}
stringArray[i][j] = s.charAt(j);
System.out.print(stringArray[i][j] + ", ");
}
System.out.println();
}
我在向空单元格插入空格时遇到问题(我不知道-我需要一些指针才能实现)。我还停留在j循环结束并从开头开始的地方(循环插入数组的字母从字符串的开头开始-我不知道在哪里插入条件以继续迭代字符串长度)。我知道方法的第二部分不好,但是我需要帮助结束它。
首先,将String按空格分隔为定界符,以便获得行数。然后,搜索最长的子字符串以获取列数。之后,您可以按行插入它们,其中行n等于tmp数组中的第n个位置。if语句用''填充单词后面的每个单元格(如果单词不是输入字符串中最长的单元格)。
public static void TextToArray(String s) {
String[] tmp = s.split(" ");
int rowCount = tmp.length;
int columnCount = 0;
for(int i = 0;i < tmp.length; i++) {
if(tmp[i].length() > columnCount) {
columnCount = tmp[i].length();
}
}
char[][] charArray = new char[rowCount][columnCount];
for(int j = 0; j < rowCount; j ++) {
for(int k = 0;k<columnCount;k++) {
if(k<tmp[j].length()) {
charArray[j][k] = tmp[j].charAt(k);
}
else {
charArray[j][k] = ' ';
}
}
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句