2013-03-04 48 views
4

實例:麻煩使用For Loops使不同字符的兩個三角形適合矩形?輸入的

3 

4 

輸出的實例(假設空間=新行。)

QQQH 
QQHH 
QHHH 

QQQQH 
QQQHH 
QQHHH 
QHHHH 

到目前爲止,代碼試圖打印這個片段是(假設所有變量被預先定義的):

public int getSize() 
{ 
    for (int i = size; i > 0; i--){ 
     for (int j = 1; j < size; j++){ 
      out.print("Q"); 
      out.print("H"); 
     } 
     out.println(""); 
    } 
    return 0; 
} 

它只是打印:(假設空間=新行)

QHQHQHQHQH 
QHQHQHQHQH 
QHQHQHQHQH 
QHQHQHQHQH 
QHQHQHQHQH 

對於輸入5.我不太確定如何使它只打印其各自整數值的次數。有人可以解釋嗎?

回答

2

你可以打破內部循環兩份,就像這樣:

for (int i = size; i > 0; i--) { 
     for (int j = 0; j < i; j++) { 
      out.print("Q"); 
     } 
     for (int j = i; j < size + 1; j++) { 
      out.print("H"); 
     } 
     out.println(); 
    } 

輸出:

QQQH 
QQHH 
QHHH 

QQQQH 
QQQHH 
QQHHH 
QHHHH 

或者,如果你不想打破循環,您可以使用三元運算:

for (int i = size; i > 0; i--) { 
    for (int j = 0; j < size + 1; j++) { 
     out.print(j < i ? 'Q' : 'H'); 
    } 
    out.println(); 
} 
0

這適用如果輸入是4 - 例如-change它到任何數量

public int getSize() 
{ 
    int cnt = 0; 
    int i,j,k = 0; 

    for (i = 4; i > 0; i--){ 

     for (j = 0; j < i; j++){ 

     System.out.print("Q"); 

     } 
     cnt ++; 
     for(k = 0 ; k <cnt ; k++) { 
      System.out.print("H"); 
     } 

     System.out.println(""); 

    } 


    return 0; 
} 

輸出是

QQQQH 
QQQHH 
QQHHH 
QHHHH 
1

嘗試此代碼塊來代替:

int j=0; 
for (int i = size; i > 0; i--) 
{ 
    j=0; 
    while(j < i) 
    { 
     out.print("Q"); 
     j++;  
    } 
    j=i; 
    while(j < size+ 1) 
    { 
     out.print("H"); 
     j++; 
    } 
    out.println(); 
} 
+0

爲什麼投票表決?請讓我知道原因,可能是我可以改進我的回答 – codeMan 2013-03-04 05:23:21

+0

你有一個無限循環,修復後,你的代碼仍然不會輸出所需的結果。 – Maroun 2013-03-04 05:26:27

+0

@ Maroun Maroun編輯了答案......對不起! – codeMan 2013-03-04 05:28:17

1

嘗試此

for (int i = 0; i < size; i++) { 
for (int j = 1; j <= size-i; j++) { 
    System.out.print("Q"); 
} 
for (int k = 0; k <= i; k++) { 
    System.out.print("H"); 
} 
System.out.println(""); 
} 
1

與樣品投入測試。工作正常

public int getSize() { 
    for (int i = 1; i < size+1; i++) { 
     for (int j = 0; j < size+1; j++) { 
      int Qtimes = size-i; 
      if(j <= Qtimes) { 
       System.out.print("Q"); 
      } else{ 
       System.out.print("H"); 
      } 
     } 
     System.out.println(""); 
    } 
    return 0; 
} 
+0

我修正了代碼的格式。如果它不符合您的喜好,請隨時將其回滾。 – user000001 2013-03-04 05:49:32

+0

@ user000001歡迎 – nav0611 2013-03-04 07:42:06