2016-07-16 45 views
0

我想打印字符的三角形。我想要这样。在java中打印字符的三角形

     A 
        A B 
        A B C 
        A B C D 
        A B C D E 

以下是我的代码。

public class Pro8Point3 
{ 
    public static void main(String[] args){ 
    int space=29; 
    char ch; 
    for (int i=1; i<=5; i++) { 
     ch='A'; 
     //Print spaces in decreasing order. A is at 29th position. 
     for (int j=1; j<=space; j++) { 
     System.out.println(" "); 
     } 
     //Print Triangle. 

     for (int k=1; k<=i; k++) { 
     System.out.print(ch+" "); 
     ch+=1; 
     } 
     space--; 
     // System.out.println(); 
    } 
    System.out.println();  
    } 
} 

但它不给我欲望输出。请指导我在这里犯了什么错误。

+1

如果您还发布了当前的输出,会更容易。 – johnnyaug

回答

2
System.out.println(" "); 

应该

System.out.print(" "); 

,你应该去掉这一行的for循环的底部:

System.out.println(); 

最终代码,搞掂格式化并提出了上述变化:

public class Pro8Point3 
{ 
    public static void main(String[] args) { 
     int space=29; 
     char ch; 

     for (int i = 1; i <= 5; i++) { 
      ch = 'A'; 

      //Print spaces in decreasing order. A is at 29th position. 
      for (int j = 1; j <= space; j++) { 
       System.out.print(" "); 
      } 

      //Print Triangle. 
      for (int k = 1; k <= i; k++) { 
       System.out.print(ch + " "); 
       ch+=1; 
      } 

      space--; 

      System.out.println(); 
     } 
    } 
} 

输出:

       A 
          A B 
          A B C 
          A B C D 
         A B C D E 
+0

是的。非常感谢。它的工作现在。谢谢。 –

2

@ smarx的正确答案后,我想发布一个通用的方法来满足这样的要求。它可能看起来像这样

public class Pro8Point3 { 

    public static void main(String[] args) { 
     print(5, 20); 
    } 

    private static void print(int level, int position) { 

     for (int i = 0; i < level; i++) { 

      char c = 'A'; 

      for(int j = 1; j < level + position - i; j++) 
       System.out.print(" "); 

      for(int j = 0; j <= i; j++) 
       System.out.print(Character.valueOf(c++) + " "); 

      System.out.println(); 

     } 
    } 
}