簡體   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