2016-04-07 55 views
0

我想基本上反向交換矩陣中單行的項目。 例如,如果這是一個INT矩陣中的一行:在矩陣中單行翻轉項目

--*---*- 

然後,當它被反向交換這將是:

-*---*-- 

我需要做的這是等於「值*「在矩陣 這就是我所擁有的。我甚至不確定它是否會起作用,而且我也會遇到越界異常。這個矩陣「圖像」是一個字符串矩陣。

public void flipHorizontal(){ 
    for (int i=0; i<image.length; i++){ 
     for (int j=0; j<image[i].length; j++){ 
      if (image[i][j].equals("*")){ 
       if(j<(image[i].length-1)/2){ 
        image[i][(image.length-1)-(image[i].length)-j]="*"; 
        image[i][j]="-"; 
       } 
       else 
        image[i][(image[i].length-1)-j]="*"; 
        image[i][j]="-"; 

      } 

     } 

    } 
} 
+0

你的例子不清楚。你想交換行中的每一個元素,即只是顛倒整行,或者只是顛倒所有'*'s的位置?舉例說明一個不同的行,例如'AB * CDE * F'。 – rgamber

回答

0

,這似乎是導致錯誤的行是第6行:

image[i][(image.length - 1) - (image[i].length) - j] = "*";

我不明白爲什麼你需要這個號碼:(image.length - 1)。這是有多少行,我不明白爲什麼這對於翻轉單行很有用。因爲長度爲4的索引將具有0到3的索引,而不是0到4,所以您的循環將從0到image.length(或image[i].length)迭代,這會給您一個比您需要的更多的迭代。按順序要解決這個問題,只需從0迭代到`image.length