[英]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.