2012-11-16 60 views
0

我遇到的問題是當我打印出horizontalLine(1, 1, 3, 1)時,它會將horizo​​ntalLine添加到控制檯中。有沒有辦法阻止重複?陣列正在複製最後一行

public class Array { 

static String arrayPicture[][]; 

public static void main (String[] args) { 

    arrayPicture = new String [5][5]; 

    for (int i = 0; i < 5; i ++) { 

     for (int j = 0; j < 5; j ++) { 
      arrayPicture [i][j] = " "; 
    } 
} 
     horizontalLine (0, 0, 4, 0); 
     horizontalLine (1, 1, 3, 1); 
} 
public static void horizontalLine (int x1, int y1, int x2, int y2) { 

      for (int k = x1; k < x2; k ++) { 
       arrayPicture [y1][k] = "*"; 
      } 
      picture(); 
      System.out.println(); 
} 
public static void picture() { 
      for (int i = 0; i < 5; i ++) { 

      for (int j = 0; j < 5; j ++) { 
       System.out.print (arrayPicture[i][j]); 
       } 
      } 
     } 
} 
+0

你的意思是一個水平線恰好在輸出之下? – PermGenError

+0

請告訴我們你期望的輸出和你得到的輸出。 –

+0

我得到的輸出是****,下面那些星號是相同的四個星號****和**後面的一個空格。我只想要兩個星號。 – user1718272

回答

0

所有在picture()方法,是因爲以打印第二陣列,索引重新啓動到0 ...

這裏的解決方案中,請注意picture()方法的參數: (即使該代碼是原本不能很好可讀)

class Array { 

    static String arrayPicture[][]; 

    public static void main(String[] args) { 

     arrayPicture = new String[5][5]; 

     for (int i = 0; i < 5; i++) { 

      for (int j = 0; j < 5; j++) { 
       arrayPicture[i][j] = " "; 
      } 
     } 
     horizontalLine(0, 0, 4); 
     horizontalLine(1, 1, 3); 
    } 

    public static void horizontalLine(int x1, int y1, int x2) { 

     for (int k = x1; k < x2; k++) { 
      arrayPicture[y1][k] = "*"; 
     } 
     picture(y1); 
     System.out.println(); 
    } 

    public static void picture(int startIndex) { 
     for (int i = startIndex; i < 5; i++) { // start from startIndex, not necessary 0 ! 
      for (int j = 0; j < 5; j++) { 
       System.out.print(arrayPicture[i][j]); 
      } 
     } 
    } 
} 

輸出:

****      
** 

(我刪除了y2的論點,因爲沒有在你的實際代碼中使用)

+0

是的,這很有用,非常感謝。 – user1718272

+0

@ user1718272不客氣。 – Mik378