为了账号安全,请及时绑定邮箱和手机立即绑定

如果我的数组大小在 java 中已满,如何动态创建数组的新实例

如果我的数组大小在 java 中已满,如何动态创建数组的新实例

青春有我 2021-06-07 17:27:17
我正在开发一个 Java 程序。在那里我获取了一个输入字符串,并将字符串中的每个字符放入 4*4 矩阵中。如果输入字符串长度小于 16,即 4*4 矩阵,那么我将添加填充 '#' 字符。但是现在,假设输入字符串长度超过 16,那么我想创建一个新数组并将剩余的字符放入其中。我不能使用矢量、集合、地图。那么我现在如何编码?这是一些代码。键=4。 char[][] giveMeNewArray() {    char[][] matrix = new char[key][key];    return matrix; } void putCharIntoMatrix() {    int counter = 0;    char[][] myArray = giveMeNewArray();    System.out.println("myArray: " + myArray);    for (int i = 0; i < key; i++) {        for (int j = 0; j < key; j++) {            if (counter >= inputString.length()) {                myArray[i][j] = '#';            } else {                myArray[i][j] = inputString.charAt(key * i + j);            }            counter++;        }    }    for (int i = 0; i < key; i++) {        for (int j = 0; j < key; j++) {            System.out.print(myArray[i][j] + "  ");        }        System.out.println();    }}
查看完整描述

2 回答

?
慕盖茨4494581

TA贡献1850条经验 获得超11个赞

如果理解您的请求正确,如果字符串长度大于 16,您只需创建一个新数组,那么如何在一个数组中初始化数组列表,如果有超过 16 个字符,只需使用您的列表将数组添加到列表中返回数组的方法。


查看完整回答
反对 回复 2021-06-10
?
慕神8447489

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];

    }

}

如果你每次扩展一个,你会做大量的扩展,如果你扩展更多,你可能扩展得太远。


与刚开始做一些数学运算相比,这确实是低效的。从一开始就制作一个适当大小的矩阵将为您节省大量数据循环,并且在内存中定期有两个矩阵。


查看完整回答
反对 回复 2021-06-10
  • 2 回答
  • 0 关注
  • 179 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信