2014-10-01 20 views
1

我的任務是創建一個使用參數(行和列)顯示模式的程序,行數和列數必須從鍵盤讀取,我必須使用2個循環。我試過它,它是不正確的,但我不想在循環增量,但每當我刪除它,我不希望模式打印模式中的行數和列數錯誤

例如,如果我輸入行:2和列:4模式將與3行5列

我需要行這樣一個規律:2和列:4樣

XXXX 
XXXX 

會有人幫我轉告問題出在哪裏?

public static void main(String[] args) { 
    Scanner in = new Scanner(System.in); 

    System.out.println("Enter number of rows"); 
    int rows = in.nextInt(); 

    System.out.println("Enter number of columns"); 
    int columns = in.nextInt(); 

    Pattern(rows, columns); 
} 
public static void Pattern (int rows, int columns) { 
    for (int i=0; i <= rows ;i++) { 
     for (int a=0; a<= columns ;a++) { 
      System.out.print("X"); 
      // only print to have pattern on same row 
     } 
     System.out.println(); 
    } 
} 
+3

用'<'替換'<=',或者從'1'而不是'0'開始。 – Pshemo 2014-10-01 16:07:06

+0

@Pshemo這是正確的答案 - 你可以把它作爲一個發佈,而不是作爲評論。 – 2014-10-01 16:07:25

+0

@CraigOtis有些人不會將答案作爲答案發布,因爲這是相對簡單的事情。 – 2014-10-01 16:08:45

回答

2

你的錯誤是:

for (int i=0; i <= rows ;i++) { 
    for (int a=0; a<= columns ;a++) { 

的問題是,i開始在0,去一路rows(同樣與acolumns

解決這個問題的辦法是簡單地改變:

int i=0 

int i=1 

並且對a進行相同操作。

這被稱爲「關閉一個錯誤」,並且通用性足以擁有自己的名字。 (你並不孤單:))

你也可以將<=改爲<來解決這個問題。

+0

終於它的工作感謝幫助! – 2014-10-01 16:15:43

+0

@Rim_Jhim不客氣:) – StephenButtolph 2014-10-01 16:19:44

3

<=替換爲<,或者從1而不是0開始。

看看循環這樣一個for (int i = 0; i<=3; i++){ }

  1. i=0i<=30<=3真)讓我們繼續和之後增量I至1
  2. i=0i<=31<=3真)讓我們繼續並增加我之後到2
  3. i=0i<=32<=3爲真)讓我們繼續並將它增加到3後
  4. i=0i<=33<=3真)讓我們繼續和增量我後到4
  5. i=0i<=34<=3假)讓停車

所以你看循環迭代4時間,因爲有4個整數值從0開始,它們是減去或等於到3(這些值是0,1,2,3)。爲了使循環3次,你需要從一組公認的整數中刪除一個值,所以無論是不接受的條件3作爲有效參數使其

  • 1, 2, 3通過啓動從1int i = 1
  • 0, 1, 2,所以考慮寫它作爲
    • i<3(經常使用,你應該習慣了它)
    • i<=2