2015-04-12 43 views
0

我負責製作柵欄繪圖程序。到目前爲止,我可以讓用戶輸入值設置高度和寬度,並使用嵌套for循環,我可以得到它輸出的高度和寬度作爲「#」符號。問題是我需要它有#與|的邊界在中間。在Java中使用for循環繪製柵欄

目前4高4寬度柵欄看起來像這樣

####  
#### 
#### 
#### 

我需要它看起來像這樣

#### 
#||# 
#||# 
#### 


    public void draw() { 
     for (i = 1; i < height-1; i++) { 
      System.out.print("#"); 
      for (j = 1; j < width-1; j++) { 
       System.out.print("|"); 
      } 
      System.out.println("#"); 
     } 
     fenceCount++; 
    } 

什麼時候確定使用休息。我有一個循環,詢問用戶是否想要構建另一個圍欄類型y或n。在終止用戶輸入「n」的結尾處,是否有人知道是否有更好的方式來做到這一點比休息一下; ?在這裏是一個單獨的休息「好」?我聽說休息時間很迂迴。此外,我總是覺得我必須扭轉我對while循環的想法。

+0

你可以添加一個怎樣的例子圍欄應該看起來像你的問題(你可以把它放在'

' and '
'標籤內,使它看起來像在控制檯上看起來一樣)? – RealSkeptic

+0

@alfasin他的代碼在我的Eclipse上編譯得相當好。 – RealSkeptic

+0

@Alex,你可以看看這個答案。這可能是有幫助的 - http://stackoverflow.com/questions/29053675/nested-loop-want-to-print-out-frame-of-asterisks/29054548#29054548 – Razib

回答

1

更改draw()到:

public void draw() { 
    String border = String.format("%0" + width +"d", 0).replace("0", "#"); 
    System.out.println(border); // top-border 
    for (int i = 1; i < height-1; i++) { 
     System.out.print("#"); 
     for (int j = 1; j < width-1; j++) { 
      System.out.print("|"); 
     } 
     System.out.println("#"); 
    } 
    System.out.println(border); // bottom-border 
} 
+1

啊我遇到了這個與我的興趣計算器,使股票邊界真棒!我遇到了麻煩,因爲我在過去做過其他程序中的表格,但它們是帶有存儲單詞或字符串的標題。字符串格式和替換是天才。謝謝! – Alex

1

您的柵欄輸出將目前完全充滿了「#」
你說得對,頂部和底部行只會有「#」

對於剩餘行,在第一項而最後一列你需要一個#,否則a |

這裏的財產以後,以幫助:

for (i = 1; i <= height; i++) 
    { 
    if(first or last row) 
    { 
     for (j = 1; j <= width; j++) 
     { 
     print# 
     } 
    } 
    else{ 
      for (j = 1; j <= width; j++) 
      { 
       if(j=1 or j=last column) 
        print '#' 
       else 
        print '|' 
      } 
     } 
     System.out.println(); 
    } 

這將爲你柵欄以及:-)