繁体   English   中英

我的方法只返回从 while 循环中获得的最后一个值

[英]My method is returning only the last value that was gotten from the while loop

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

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循环在退出之前会覆盖所有数据。 我怎样才能解决这个问题?

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

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

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

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

-> variableX 是 ClassName 类型,并且构造函数接受 2d 数组 -> 传递的 2D 数组会将其值分配给实例 2d 数组。 实例 2d 数组是被打印的数组

问题是你的循环:

 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); } }

将覆盖整个数组,因为你 go 从第0行到returnchar.length ,每次。 相反,您只需要在最后一行之后填写下一行。 您可以按如下方式重写您的for循环:

for (int r=0; r<returnchar.length; r++) { // "r" for row
    String line = input.nextLine();
    String[] splitter = line.split(" ", 2);
    for (int c=0; c<returnchar[r].length; c++) { // "c" for column
        returnchar[r][c] = splitter[c];
    }
}

这是如何打印一个漂亮的 Array 2D:

for (char[] x : returnChar) {
    System.out.println(Arrays.toString(x));
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM