0

上次我在这里时,我在计算机科学作业中需要帮助的唯一问题是在 100 行上制作一个直角三角形,这是代码:

    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"

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

我确定这很简单,但到目前为止我尝试过的所有东西都失败了,或者一次只创建了 1 个空间。任何建议或帮助将不胜感激!先感谢您!

4

8 回答 8

2

好的,首先看看这两个问题。你会如何把它们联系起来。

由于第二个问题与第一个问题相反,因此您在第一个代码中首先执行的操作,您需要在下一个问题中最后执行。

因此,您的循环实际上应该在以下代码中结束的地方向后工作。

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

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

提示:-

  • 从 0 递增到 100 是正向的
  • 从 100 递减到 0 是倒退

    ****  
     ***  
      **
       *  
    

此外,在您的上述模式中,您看到spaces在实际打印之前需要先打印characters所以,您也需要考虑这一点。

所以,在这里你必须实际打印两个不同的字符: -

  • 很少Spaces,其次是,
  • 很少*'s

这是模式: -

  • 让我们的最大行是max(在你的情况下为 100)
  • 第 ( )行i有 ( i) 个数spaces(第 0 行有 0 个空格,第 1 行有 1 个空格)
  • 然后它有 ( n - i) 个数stars(第 0 行有 100 颗星,第 1 行有 99 颗星)

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

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

于 2012-10-13T17:53:29.447 回答
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++;
 }
于 2012-10-13T18:00:40.813 回答
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();
    }
 }
 }
于 2012-10-13T19:24:23.060 回答
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
于 2012-10-13T17:59:12.747 回答
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();
    }
}
于 2013-12-12T03:28:12.987 回答
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();
        }
    }
}
于 2012-10-13T17:54:01.423 回答
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();           
         }
   }
}
于 2013-10-13T12:10:10.433 回答
0

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

就像在上一个问题上打印 * 一样,您需要打印空格。然后以相反的顺序打印星星。

*
**
***

***
 **
  *
于 2012-10-13T17:54:48.537 回答