2014-07-04 165 views
0
package mypack; 

public class Loop { 

public static void main(String[] args) { 

    for(int i=0;i<=8;i++){ 
     for(int j=1;j<=i+1;j++){ 
      System.out.print(j); 
     } 
     System.out.println(); 

    } 
    for(int i=8;i>=1;i--){ 
     for(int j=1;j<=i;j++){ 
      System.out.print(j); 
     } 
     System.out.println(); 

    } 

     } 

    } 

輸出::核心Java打印蝶形結構

1 
12 
123 
1234 
12345 
123456 
1234567 
12345678 
123456789 
12345678 
1234567 
123456 
12345 
1234 
123 
12 
1 

我想它在右側的鏡像。 有人可以幫助我這個。

+3

將朝左屏幕與反射面的反射鏡,使得鏡的一邊是並行到'1'的線,鏡子的表面垂直於屏幕。巴姆!你在另一面有鏡像(字面意思!)。 – awksp

+0

更嚴重的是,你有什麼嘗試? 「這是我想要的,有人可以幫忙」在Stack Overflow中通常被認爲是過於寬泛。 – awksp

+0

提示提示..您需要在相同的迭代中打印左側和右側。 –

回答

1

你可以做什麼來算number of spaces你加號的反射之前以在控制檯中的蝴蝶效應,使用String.format

樣本:

public static void main(String[] args) { 

    int j; 
    for (int i = 0; i <= 8; i++) { 
     for (j = 1; j <= i + 1; j++) { 
      System.out.print(j); 
     } 
     System.out.print(String.format("%"+((10 - j)*2 != 0 ? (10 - j)*2 : "")+"s", "")); 

     for (j = i + 1; j >= 1; j--) { 
      System.out.print(j); 
     } 
     System.out.println(); 

    } 
    for (int i = 8; i >= 1; i--) { 
     for (j = 1; j <= i ; j++) { 
      System.out.print(j); 
     } 

     System.out.print(String.format("%"+((10 - j)*2 != 0 ? (10 - j)*2 : "")+"s", "")); 

     for (j = i; j >= 1; j--) { 
      System.out.print(j); 
     } 
     System.out.println(); 

    } 

} 

結果:

1    1 
12    21 
123   321 
1234   4321 
12345  54321 
123456  654321 
1234567 7654321 
12345678 87654321 
123456789987654321 
12345678 87654321 
1234567 7654321 
123456  654321 
12345  54321 
1234   4321 
123   321 
12    21 
1    1 
1

one簡單的方法是:

public static void main(String[] args) { 
    int limit = 10; 
    String left = "%-9s"; 
    String right = "%9s"; 
    for (int i = 0; i < limit; i++) { 
     StringBuilder b = new StringBuilder(); 
     for (int j = 1; j < i + 1; j++) { 
      b.append(j); 
     } 
     System.out.println(String.format(left, b.toString()) 
       + String.format(right, b.reverse().toString())); 
    } 
    // skipping the redundant line from last syso in above loop 
    for (int i = limit - 2; i > 0; i--) { 
     StringBuilder b = new StringBuilder(); 
     for (int j = 1; j < i + 1; j++) { 
      b.append(j); 
     } 
     System.out.println(String.format(left, b.toString()) 
       + String.format(right, b.reverse().toString())); 
    } 
} 

想法是打印序列(左對齊),然後在每次迭代中打印其反向(右對齊)。

0

package mypack;

公共類環{

public static void main(String[] args) { 

    for(int i=0;i<=6;i++){ 
     for(int j=1 ;j<=i+1;j++){ 
      System.out.print(j);  
      } 
     System.out.print("\t"); 
     for (int j=0;j<6-i;j++) 
      System.out.print(" "); 

          for (int k=1;k<=i+1;k++) 
           System.out.print(k); 

     System.out.println(); 

    } 
    for(int i=6;i>=0;i--){ 
     for(int j=1;j<=i+1;j++){ 
      System.out.print(j); 
     } 
     System.out.print("\t"); 
     for (int j=0;j<6-i;j++) 
      System.out.print(" "); 

          for (int k=1;k<=i+1;k++) 
           System.out.print(k); 

     System.out.println(); 

    } 

     } 

    } 

得到它通過我自己,謝謝大家..