我嘗試了很多,但沒有解決方案。我必須將一個長度爲16的1d數組轉換爲一個4x4的2d數組,其中元素對角線位於java將1d陣列轉換爲對角放置元素的2d
例如。 維數組作爲輸入:需要{0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}
輸出:
我嘗試了很多,但沒有解決方案。我必須將一個長度爲16的1d數組轉換爲一個4x4的2d數組,其中元素對角線位於java將1d陣列轉換爲對角放置元素的2d
例如。 維數組作爲輸入:需要{0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}
輸出:
這是簡單的:在一個一個維陣列
1-讀取值
2-確保數組的長度是16
3-創建的二維陣列
4-橫向在所述一個維陣列For循環
5-使用嵌套for循環,從一維數組中的值存儲到二維數組
像這樣(僞代碼;只是爲了給你一些隨意的想法;我沒有測試它;我認爲它的工作原理,但有可能會包含一些錯誤):
input = array[n * m];
output = array[m][n];
var i = 0;
var x = 0;
var y = 0;
while (i < array.length) {
if (x < n && y < m)
output[y][x] = input[i++];
if (y-- == 0) { // we're already at the "top"
y = x + 1; // move to the next row
x = 0; // reset the column
}
}
只是要注意,這是不的最有效的方式做到這一點,但這應該工作。
重要的是,萬一這是一些功課: 雖然#2是爲了回答這些問題,你應該總是提供一些最少的代碼向人展示你試過什麼。這樣我們可以告訴你你犯了什麼錯誤。不要讓別人爲你寫所有的代碼,因爲你不會從中學習。因此,我強烈建議您嘗試上面的代碼,但前提是您能夠理解實際發生的事情。一旦你這樣做了,你可以開始自己實施,只看你是否被卡住了。
看看這個程序。問題徹底解決了.http://javawk.blogspot.in/2013/10/important-array-programto-traverse.html – Sonal
請發表您的代碼/想法。 – Maroun
您的輸出是一維數組。 –
4x4二維數組?我很抱歉 –