以下代码询问用户要创建的字数:
String sInt = JOptionPane.showInputDialog("Cuántas palabras vamos a capturar?");
int palabras = Integer.parseInt(sInt);
char[][] charMatrix = new char[palabras][];
目标是将单词保存在矩阵中并打印出来,将每个字符保存在不同的矩阵维度中。
for (int i = 0; i<palabras; i++) {
String str = JOptionPane.showInputDialog("Palabra: ");
for(int j = 0; j<=str.length() - 1; j++) {
charMatrix[i] = new char [str.length()];
charMatrix[i][j] = str.charAt(j);
}
}
让我们说用户选择了2个单词,他们是你好再见。下一行打印矩阵。
for(int r = 0; r <charMatrix.length; r++) {
System.out.println(Arrays.toString(charMatrix[r]));
}
应该打印:
[h,e,l,l,o]
[b,y,e]
但是打印:
[ , , , ,o]
[ , ,e]
答案 0 :(得分:3)
在charMatrix[i] = new char [str.length()];
循环之前向上移动for
。从用户阅读str
后,您需要设置一次该数组。目前在每次迭代开始时,您将存储在charMatrix[i]
新数组中,该数组不包含先前设置的值,因此在最后一次迭代后,您将获得仅具有最后一个元素集的空数组(因为最后一次迭代仅放置该元素) 。
顺便说一下,您可以使用str.toCharArray()
来简化代码并删除内部循环,char[]
会返回str
数组,其中包含obj
所拥有的字符。