在我的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--;
}
}
}
其余的任务比这个让我感到困惑的事情更困难,我无法弄清楚这一点。任何帮助将不胜感激。
答案 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
循环中,我们有另一个循环来自
0
到i - 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++;
}