2009-11-18 118 views
0

的我怎樣才能在Java末二維數組

說,如果我得到一個行的二維數組的結束,我只遇到0的該行 中設置排至下一個(行+ +)並將列設置爲0(列= 0)?

我有問題,在我的算法我去到一個無限循環:d

感謝

+2

將您的代碼發佈爲您期望的示例輸入和輸出。 – Joe 2009-11-18 08:59:15

+0

你可以發佈你的算法嗎? – Konamiman 2009-11-18 08:59:26

+0

幾乎不可能不發送給你包含存儲在程序外部文件中的圖形的整個項目 – timmy 2009-11-18 09:03:01

回答

1

嗯,聽起來像是你想有一個基本的嵌套循環來在你的陣列迭代...

for(int i=0; i<rows.length; i++) 
    for(int j=0; j<columns.length; j++) 

無論如何這將重置您的列。如果你想要做一些調皮和hackish的

int sum =0; 
for(int i=0; i<rows.length; i++) 
{ 
    sum+= rows[i]; 
    if(i == rows.length-1 && sum == 0) 
    { 
    i=i+1 
    } 
    for(int j=0; j<columns.length; j++) 
    { 
    //whatever else you want here 
    } 
} 

注意,這似乎是一個最不尋常的條件算法...我希望你不是試圖破解圍繞一個骯髒的錯誤,而不是搞清楚什麼真正的問題是!

+0

我有一個對稱矩陣,當我循環遍歷它的頂部時,我發現一個> 0,我從矩陣[ x] [y]和矩陣[y] [x]然後我將下一行設置爲我所在的列,這種情況發生,直到我的數組中沒有剩餘值,問題就像我這樣做,我得到了一個點一行沒有0,所以我需要說,如果我在一行的末尾,並且沒有0,就從下一個 – timmy 2009-11-18 09:18:10

+0

重新開始。那麼你究竟想要做什麼?如果你試圖在一個循環內動態調整一個nxn二維數組的大小,你可能會陷入困境。 聽起來相當深奧,但如果您只是試圖同時將[2] [3]和[3] [2]中的值減1,而數組中仍然存在非零值,則可以簡化這相當多的邏輯。 – 2009-11-18 09:32:56

+0

是的,這是我所要做的, 它適用於snaller圖,我只是想做一個野獸,它被卡在一個循環:S – timmy 2009-11-18 09:48:08

0

該樣本循環遍歷數組,直到找到第一個非零值並將其與座標一起輸出。

int[][] x = new int[column][row]; 
boolean allzero = true; 

for(int i=0;i<row;i++) { 
    for(int j=0;j<column;j++) { 
    allzero = (x[j][i]==0) && allzero; 
    if(!allzero) { 
     //what do we want to do when we encounter a non zero value? 
     System.out.println("Found "+x[j][i]+" at row: "+i+" column: "+j); 
     break; 
    } 
    } 
    if(!allzero) { 
    //what do we want to do when we encountered a non zero value? 
    break; 
    } 
} 

其實我不明白你的意思

組列,以0什麼(列= 0)

如果你只是想繼續通過數組循環兩個嵌套for循環像上面這樣做。一行完成後(內循環),外循環增加1,而內循環重新開始爲零。因此,所有行都從頭到尾運行。