2 回答
TA贡献1850条经验 获得超11个赞
如果理解您的请求正确,如果字符串长度大于 16,您只需创建一个新数组,那么如何在一个数组中初始化数组列表,如果有超过 16 个字符,只需使用您的列表将数组添加到列表中返回数组的方法。
TA贡献1780条经验 获得超1个赞
因此,如果我正确理解了这个问题,您想创建一个矩阵来保存输入字符串的字符,最小大小为 4*4?
您最好创建一个合适的矩阵而不是扩展它:
你想让你的矩阵永远是方形的吗?
使用 Math.sqrt
int lowRoot = (int)Math.sqrt(inString.length());
int root;
if(lowRoot * lowRoot < inString.length())
root = lowRoot+1;
else
root = lowRoot;
创建按输入缩放的矩阵,最少四个
int size = (root < 4) ? 4 : root;
char[][] matrix = new char[size][size];
但是如果你真的想扩展它,你可以创建一个更大的新矩阵:
char[][] newMatrix = new char[oldMatrix.length+1][oldMatrix[0].length+1];
并将旧矩阵复制到新矩阵中
for(int i = 0; i < oldMatrix.length; ++i){
for(int j = 0; j < oldMatrix[i].length; ++j){
newMatrix[i][j] = oldMatrix[i][j];
}
}
如果你每次扩展一个,你会做大量的扩展,如果你扩展更多,你可能扩展得太远。
与刚开始做一些数学运算相比,这确实是低效的。从一开始就制作一个适当大小的矩阵将为您节省大量数据循环,并且在内存中定期有两个矩阵。
添加回答
举报