初学者java,显示与整数相关的特殊字符

时间:2012-09-29 02:26:41

标签: java geometry character

在我的CSC 2310课程中做一些功课,我无法弄清楚这一个问题......它的内容如下:

  

编写一个程序,绘制一个100行的直角三角形   以下形状:第一行,打印100'',第二行,99   ''...最后一行,只有一个'*'。将程序命名为   PrintTriangle.java。

我的代码几乎是空白的,因为我需要弄清楚如何使代码看到i = 100打印出一百个星号,i = 99打印九十九等等。但这就是我到目前为止所做的一切:

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) {
        // code here that reads i's value and prints out an equal value of *
            i--;
        }
    }
}

其余的任务比这个让我感到困惑的事情更困难,我无法弄清楚这一点。任何帮助将不胜感激。

4 个答案:

答案 0 :(得分:2)

如你所知,你显然需要100行。所以你需要一个进行100次迭代的外循环(就像你一样)。在此循环的正文中,您必须在一行中打印i *个字符,因此您只需:

for (int j = 0 ; j < i ; j++) System.out.print("*");
System.out.println();  // newline at the end

因此你将拥有:

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

或等效地,

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

编辑仅使用while循环:

int i = 100;  // this is our outer loop control variable
while (i > 0) {
    int j = 0;  // this is our inner loop control variable
    while (j < i) {
        System.out.print("*");
        j++;
    }
    System.out.println();
    i--;
}

所以要打破它:

  • 我们有一个从i = 100向下循环到i = 1的外循环。

  • 在这个外部while循环中,我们有另一个循环来自 0i - 1。因此,在第一次迭代中,这将是0-99 (总共100次迭代),然后从0-98(总共99次迭代),然后 从0-97(总共98次迭代)等。

  • 在这个内部循环中,我们打印一个*字符。但我们这样做i 时间(因为它是一个循环),所以我们第一次有100 * s,然后是99,然后是98等(如 你可以从上面的观点看到。)

  • 因此,出现了三角形模式。

答案 1 :(得分:1)

您需要两个循环,一个用于确定每行要打印的字符数,还有一个内部嵌套循环,用于确定打印单个字符的次数。

提示是内部循环并不总是计数到固定数字,而是从1到(100 - 某样)计数。

答案 2 :(得分:1)

试试这个:

public class PrintTriangle {
    public static void main(String[] args) {

       for(int i = 100; i >= 1; i--){

           System.out.print("\n");

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

       }

   }
}

说明:嵌套的for循环有一个名为j的变量。 j是打印的次数*。打印后检查它是否等于i。我是big for循环中的一个变量。我记录了一条线的打印次数。 \ n表示换行符。

答案 3 :(得分:0)

你可以从侧面来看......

StringBuilder sb = new StringBuilder(100);
int index = 0;
while (index < 100) {
    sb.append("*");
    index++;
}

index = 0;
while (index < 100) {
    System.out.println(sb);
    sb.deleteCharAt(0);
    index++;
}

但我认为我更喜欢使用循环方法循环;)

你可以通过增加每个循环添加的星数来提高第一个循环的效率,并相应地减少数字循环......

即添加2个启动,需要50个循环,添加4个,需要25个,添加5个需要20个,添加10个,需要10个...

例如

while (index < 10) {
    sb.append("**********");
    index++;
}