我的方法仅返回从 while 循环获取的最后一个值

我正在做一个作业,我们必须从文件中获取字符并将其存储在二维数组中。我们不允许在任何地方发布我们的代码,所以我将使用伪代码。如果不清楚,请告诉我。


fillFromFile (parameters){

    Scanner input = new Scanner(new FileReader(fileName));//from parameter

    char[][] returnChar = new char[parm][parm];//gotten from parameters

    String line = input.nextLine();

    String[] spliter = null;

    int count = 0;


    while (input.hasNextLine and count < row) {

        line = input.nextLine();

        spliter = line.split(" ", 2);

        count++;

        for (int i = 0; to returncharLength; increment i) {

            for (int j = 0; to returnchar[i]Length; increment j) {

                returnChar[i][j] = spliter[0].charAt(j);

            }

        }   

    }

    return returnChar;

}

如果我直接从方法中打印出来,则会显示正确的值,但我们无法从方法中打印。已经有一个 toString() 方法可以处理这个问题。


返回的二维数组只是最后一个字符。例如,如果这是预期值,


r e

r e

o p

b n

这就是返回的内容


b n

b n

b n

b n

我尝试过在返回之前和之后进行深度复制,但没有区别。我的深复制方法如下所示:


private static char[][] deepCopy (char [][] data){

    char [][] newArray = new char [//][//];

    for (int i = 0; i < length i++) {

        for (int j = 0; j < colLength; j++) {

            newArray[i][j] = data[i][j];

        }

    }

    return newArray;

}

我认为 while 循环在退出之前会覆盖所有数据。我怎样才能解决这个问题 ?


如果有不清楚的地方,请告诉我,我会编辑我的问题。


我还尝试在方法的不同部分返回二维数组


这是我如何使用返回的二维数组的示例


变量X = new ClassName (2dArrayThatWasReturned); 返回变量X;


->variableX 是 ClassName 类型,构造函数接受一个二维数组 ->传递的二维数组将把它的值分配给实例二维数组。实例二维数组是打印的数组


慕姐8265434
浏览 145回答 2
2回答

海绵宝宝撒

问题是你的循环:for (int i = 0; to returncharLength; increment i) {&nbsp; &nbsp; for (int j = 0; to returnchar[i]Length; increment j) {&nbsp; &nbsp; &nbsp; &nbsp;returnChar[i][j] = spliter[0].charAt(j);&nbsp; &nbsp; }}将覆盖整个数组,因为每次都从 row 转到 , 0。returnchar.length相反,您只需要填充最后一行之后的下一行。您可以for按如下方式重写循环:for (int r=0; r<returnchar.length; r++) { // "r" for row&nbsp; &nbsp; String line = input.nextLine();&nbsp; &nbsp; String[] splitter = line.split(" ", 2);&nbsp; &nbsp; for (int c=0; c<returnchar[r].length; c++) { // "c" for column&nbsp; &nbsp; &nbsp; &nbsp; returnchar[r][c] = splitter[c];&nbsp; &nbsp; }}

慕无忌1623718

这是打印漂亮的 2D 数组的方法:for&nbsp;(char[]&nbsp;x&nbsp;:&nbsp;returnChar)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;System.out.println(Arrays.toString(x)); }
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java