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

我正在开发一个 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();

    }

}


青春有我
浏览 180回答 2
2回答

慕盖茨4494581

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

慕神8447489

因此,如果我正确理解了这个问题,您想创建一个矩阵来保存输入字符串的字符,最小大小为 4*4?您最好创建一个合适的矩阵而不是扩展它:你想让你的矩阵永远是方形的吗?使用 Math.sqrtint lowRoot = (int)Math.sqrt(inString.length());int root;if(lowRoot * lowRoot < inString.length())&nbsp; &nbsp; root = lowRoot+1;else&nbsp; &nbsp; 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){&nbsp; &nbsp; for(int j = 0; j < oldMatrix[i].length; ++j){&nbsp; &nbsp; &nbsp; &nbsp; newMatrix[i][j] = oldMatrix[i][j];&nbsp; &nbsp; }}如果你每次扩展一个,你会做大量的扩展,如果你扩展更多,你可能扩展得太远。与刚开始做一些数学运算相比,这确实是低效的。从一开始就制作一个适当大小的矩阵将为您节省大量数据循环,并且在内存中定期有两个矩阵。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java