2016-01-25 101 views
2

嘗試使用Java以半角金字塔格式打印字母表XXYY時出現問題。下面是當用戶輸入的7高度預期輸出:以金字塔格式打印指定的字母表

XX 
YYXX 
XXYYXX 
YYXXYYXX 
XXYYXXYYXX 
YYXXYYXXYYXX 
XXYYXXYYXXYYXX 

這裏是我的代碼:

public static void main(String[] args){ 
    int height = 0; 
    String display = ""; 
    Scanner sc = new Scanner(System.in); 

    System.out.print("Enter height: "); 
    height = sc.nextInt(); 

    for(int i = 1; i <= height; i++){ 
     for(int j = 1; j <= i; j++){ 
      if(j %2 == 0){ 
       display = "YY" + display; 
      }else{ 
       if(j == 1){ 
        display = "XX"; 
       } 
      } 
      System.out.print(display); 
     } 
     System.out.println(); 
    } 
} 

什麼我的邏輯是怎麼想的檢查奇/偶行的第一再加入XX或YY到顯示字符串。首先檢查第一行,然後將XX添加到顯示字符串。然後,如果是偶數行,我將YY追加到顯示字符串的前面。

但我的問題是我不知道如何計算每行的XX和YY的數量。這是我的輸出:

XX 
XXYYXX 
XXYYXXYYXX 
XXYYXXYYXXYYYYXX 
XXYYXXYYXXYYYYXXYYYYXX 
XXYYXXYYXXYYYYXXYYYYXXYYYYYYXX 
XXYYXXYYXXYYYYXXYYYYXXYYYYYYXXYYYYYYXX 
+0

你可以爲這個簡單的邏輯做一個小谷歌。 .. – dhams

回答

1

恕我直言,你是過於複雜的事情。在每一行中,您都有與行號相同數量的字母(第一行一個,第二個兩個,等等)。第一行以「XX」開始,然後開始在「XX」和「YY」之間交替。以類似的方式,行內,確定你開始什麼用之後,你兩對字母之間交替:

for (int row = 0; row < height; ++row) { 
    for (int col = 0; col <= row; ++col) { 
     if ((col + row) % 2 == 0) { 
      System.out.print("XX"); 
     } else { 
      System.out.print("YY"); 
     } 
    } 
    System.out.println(); 
} 
+0

對不起,但我不太明白,讓我們說,我們以第1行爲例。第1行有2列。所以基本上當第1行+第1列我打印出XX。那麼不是第1行+ col 2%2!= 0?那麼它怎麼永遠不會打印出YY? –

+0

@Mureinik將每個字母視爲列中的一個元素,而不是將每個字母視爲列中的一個元素。那爲什麼第一行只有一列,第二行有兩列,依此類推。 – cvesters

+0

@cvesters! – Mureinik

2

這應做到:

public static void main (String[] args) throws java.lang.Exception 
{ 
    int ht = 0; 
    Scanner sc = new Scanner(System.in); 
    System.out.print("Enter height: "); 
    ht = sc.nextInt(); 

    String text = ""; 
    for(int i=0; i<ht; i++) 
    { 
     if (i%2!=0) 
      text = "YY" + text; 
     else 
      text = "XX" + text; 
     System.out.println(text); 
    } 
} 

並與單for循環工作太!

+0

謝謝!這更直截了當! –