2016-03-06 26 views
5

Tôi cần giúp đỡ làm một hình tam giác được nhân đôi như thế này:Tạo một đôi nhân đôi tam giác

*  * 
** ** 
*** *** 
******** 

tôi có thể nhận được mỗi một seperatly, nhưng tôi không thể kết hợp chúng.

public static void main(String[] args){ 
     for(int i = 1; i <= 5; i++){ 
      for(int j = 0; j < i; j++){ 
       System.out.print("*"); 

      } 
      System.out.println(); 
     } 
     for(int i = 0; i < 6; i++) 
     { 
      for(int j = 5; j > 0; j--) 
      { 
       if(i < j) 
        System.out.print(" "); 
       else 
        System.out.print("*"); 
      } 
      System.out.println(); 
     } 
} 
+1

@Cho phép họ chấp nhận câu trả lời của riêng mình, đừng yêu cầu upvotes –

Trả lời

3

Bạn có thể làm điều đó bằng cách sử dụng mã này.

public class Test { 
    public void sizeOfTri(int triSize) { //Number of lines 
     int line = 1; 
     for(int i = 0; i < triSize; i++) { //Handles Each line 
      int temp = triSize * 2; 
      for(int j = 1; j < temp; j++) { //Handles Each space on the line 
       if(j <= line && j == triSize || j >= temp - line && j == triSize) { //For the very last line because it needs an extra * 
        System.out.print("**"); 
       } else if(j <= line || j >= temp - line) { //For normal lines 
        System.out.print("*"); 
       } else if(j == triSize) { 
        System.out.print(" "); //For the second to last line because it needs an extra space to make it look mirrored 
       } else { //For normal lines 
        System.out.print(" "); 
       } 
      } 
      System.out.println(); 
      line++; 
     } 
    } 

    public static void main(String[] args) { 
     new Test().sizeOfTri(4); 
    } 
} 

Tôi đã nhận xét bên cạnh các tuyên bố về phần nào làm gì. Điều này sẽ tạo ra một đầu ra trông giống như bên dưới khi chạy

*  * 
** ** 
*** *** 
******** 
4

Bạn cần theo dõi vị trí từ cả hai bên để có thể hiển thị * ở vị trí chính xác. Đây là giải pháp:

for (int i = 1; i <= 5; i++) { 
    for (int j = 1; j <= 10; j++) { 
     if (j <= i || j > 10 - i) { 
      System.out.print("*"); 
     } else { 
      System.out.print(" "); 
     } 
    } 
    System.out.println(); 
} 
+0

thực sự thích cách tiếp cận của bạn về sự cố ... – Vineeth

1

Mã sau đây là hàm có chiều cao thay đổi.

public static void printDoubleTriangle(int height) { 
    for(int i = 0; i < height; i++) { 
     for(int j = 0; j < 2*height; j++) { 
      if(j <= i || (2*height - j - 1) <= i) { 
       System.out.print("*"); 
      } else { 
       System.out.print(" "); 
      } 
     } 
     System.out.println(); 
    } 
} 
2

Mặc dù, tất cả các triển khai ở trên đều thực sự tốt. Tôi nghĩ rằng làm nó hơi khác và sử dụng các mảng 2-D.

package algorithms; 

public class DrawMirror { 
    static void initialize(String[][] array){ 
     for (int i=0; i<MAX_X; i++){ 
      for (int j=0; j < MAX_Y; j++){ 
       array[i][j] = " "; 
      } 
     } 
    } 

    static void draw(String[][] array, int x, int y){ 
     for (int i=0; i < y; i++){ 
      array[x][i] = "*"; 
      array[x][MAX_Y-i-1] = "*"; 
     } 
    } 

final static int MAX_X = 4; 
final static int MAX_Y = 8; 

    public static void main(String[] args) { 
     String[][] array = new String[MAX_X][MAX_Y]; 

     initialize(array); 

     for (int i=0; i < MAX_X ; i++){ 
      draw(array,i,i+1); 
     } 


     for(int i = 0; i < MAX_X; i++){ 
      for(int j = 0; j < MAX_Y; j++){ 
       System.out.print(array[i][j]); 
      } 
      System.out.println(); 
     } 
    } 
}