2012-10-13 338 views
0

我最后一次在这里,唯一的问题,我需要帮助,在我的计算机科学功课参与制作100线直角三角形,这里是该代码:初学者的java - 打印直角三角形向后

public class PrintTriangle { 
    public static void main(String[] args) { 
     // Print a right triangle made up of * 
     // starting at 100 and ending with 1 
     int i = 100; 
     while (i > 0) { 
      for (int j = 0; j < i; j++) 
      System.out.print("*"); 
      System.out.println(); 
     i--; 
     } 
    } 
} 

好吧,现在他要求我们做相反的事情。这里的实际问题:

“写一个程序,将绘制在 以下形状100线直角三角形:第一行,打印100‘’,第二行,99 ‘’。 ..最后一行,只有一个“*”。使用for循环这个问题。 名称的程序作为PrintTriangle.java”

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

我敢肯定它的东西简单,但我什么都尝试过直到这一点已经失败或仅在a创建了1个空间 时间。任何建议或帮助将不胜感激!先谢谢你!

回答

2

好的,先来看看这两个问题。你将如何与他们联系。

由于第二个问题是第一次的反向,你这样做是什么先在自己的第一个代码,你需要做的,去年在这接下来的问题..

所以,你的循环实际上应该向后哪里工作它以下面的代码结束。

int i = 100; 
for (int j = 0; j < i; j++) 
      System.out.print("*"); 

所以,想想你需要做些什么来使这个循环向后工作。

提示: -

  • 递增,从0到100的前进
  • 递减,从100到0向后

    **** 
    *** 
        ** 
        * 
    

而且,在你上面的图案你看到您在打印您的之前需要首先打印spaces所以,你也需要考虑。

所以,在这里,你必须实际打印两种不同的角色: -

  • 很少Spaces,紧接着,
  • 很少*'s

这里的模式: -

  • 让我们的最大行为max(100你的情况)
  • 行(i)有(i)的spaces号(行0具有0的空间,第1行具有1个空间)
  • 然后,它具有:(n - i)的stars(行0号有100颗恒星,第1行有99颗星)

所以,你可以看到你的实际需要two循环这里。

分析一下,我说的一切,并拿出一些代码。试试看。

0
public class Main { 
    public static void main(String[] args) { 
     for (int i = 0; i < 100; i++) { 
      for (int j = 0; j < i; j++) 
       System.out.print(" "); 
      for (int j = i; j < 100; j++) 
       System.out.print("*"); 
      System.out.println(); 
     } 
    } 
} 
+0

@Hisham ..请不要张贴工作代码,除非OP尝试它自己。这将根本不帮助他。 –

+0

@RohitJain ..道歉对于这一点,以为他只是想代码 – Hisham

+0

@Hisham ..其确定。但即使他想要代码,也不应该给他。现在好了。记住下次 –

0

我只是告诉你如何做到这一点。 了解模式。

就像印刷*以往的问题,你需要打印的空间。然后按相反顺序打印星星。

* 
** 
*** 

*** 
** 
    * 
+0

第一个空格不需要管理。倒退并不是直的。 – SiB

0

对于这些类型的金字塔(我叫他们)首先确保你的空间权

* * * * * 
- * * * * 
- - * * * 
- - - * * 
- - - - * 

现在你可以看到两种模式,现在你可以编程。下面是伪代码...

FOR I=1 to N 
    FOR J = 1 to I-1 
     PRINT " " 
    ENDFOR 
    FOR K = 1 to N-I+1 
     PRINT "*" 
    ENDFOR 
PRINT "\n" 
ENDFOR 
0
int i = 1; 
while (i =< 100) { 
    // first put spaces as long as it is necessary 
    // it will be i times less than 100 
    // for example for the first line (i = 1), 99 space (100-i) and 1 star (i) 
    // for the 50. line (i == 50), 50 space (100-i) and 50 stars (i) 
    for(int j = 0; j < 100-i; j++) 
    System.out.print(" "); 

    // then the stars 
    for (int j = 0; j < i; j++) 
    System.out.print("*"); 
    System.out.println(); 
    i++; 
} 
0

下面的代码可以帮助您找到解决方案。

class ReverseTriangle { 
public static void main(String[] args) { 
    for (int i = 0; i < 100; i++) { 
     for (int j = 0; j < i; j++) 
      System.out.print(" "); 
     for (int j = i; j < 100; j++) 
      System.out.print("*"); 
     System.out.println(); 
    } 
} 
} 
0
public class PrintTriangle { 
    public static void main(String[] args) { 

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

请修正代码高亮显示并在您的代码片段中添加一些说明。从FAQ中阅读这篇文章:http://stackoverflow.com/help/how-to-answer –

0
public static void printPyramid(int ln){ 
    for(int j=ln;j>0;j--){ 
     for(int i=ln;i>0;i--) { 
      if (j >= i) { 
       System.out.print("*"); 
      } else { 
      } 
      System.out.print(" "); 
     } 
     System.out.println(); 
    } 
} 

public static void printReversePyramid(int ln){ 
    for(int j=0;j<ln;j++){ 
     for(int i=ln;i>=0;i--) { 
      if (j >= i) { 
       System.out.print("*"); 
      } else { 
      } 
      System.out.print(" "); 
     } 
     System.out.println(); 
    } 
} 

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