4 回答
TA贡献1785条经验 获得超8个赞
将你的内在 for 循环更改为:
for (int i = 1; i <= row; i++) {
for (int j = 1; j <= i; j++) {
if (i == 1) {
System.out.print(star);
}
if (i > 1) {
System.out.print(star);
if (i - 1 >= j) { // <-- change made in this if-block only
System.out.print(undrscr);
}
if (j == i) {
System.out.print("");
}
}
}
System.out.println();
}
在打印下划线之前,请检查是否因为根据您的要求下划线数始终比星数少1。i - 1 >= j
TA贡献1804条经验 获得超2个赞
试试这个..
int row = 5;
String star = "*";
String undrscr = "_";
String s;
for (int i = 1; i <= row; i++) {
for (int j = 1; j <= i; j++) {
System.out.print(star);
if (i != j)
System.out.print(undrscr);
}
System.out.println();
}
TA贡献1847条经验 获得超11个赞
试试这个:
//i was the rowNum and the number of stars of that row
for (int rowNum = 0; rowNum<=rows; rowNum++) {
int numStars = 0;
while (numStars<rowNum) {
System.out.print(star+undrscr);
numStars++;
}
System.out.println(star);
}
输出:
*
*_*
*_*_*
*_*_*_*
*_*_*_*_*
*_*_*_*_*_*
编辑:最好使用这种方法,你会得到5行而不是6行。
for (int rowNum = 1; rowNum<=rows; rowNum++) {
int numStars = 1;
while (numStars<rowNum) {
System.out.print(star+undrscr);
numStars++;
}
System.out.println(star);
}
TA贡献1884条经验 获得超4个赞
在此,星星的行数呈递增顺序(即第一行有 1 颗星,第二行为 2 颗星,依此类推)。
逐步描述性逻辑,以打印带有下划线图案的直角三角形星形。
1)输入用户要打印的行数。我们传递 5 行。
2)要循环访问行,请使用循环结构 for(i=0; i=5<; i++) 运行一个从 0 到 5 的外部循环。
3)要循环访问列,请使用循环结构 for(j=0; j=0;< j=i; j++) 运行一个从 0 到 i 的内部循环。内部循环内部打印星形。
4)在列循环中,我们检查i == j是否然后只打印星形,否则打印星形和下划线。
5)打印一行的所有列后,移动到下一行,即打印新行。
int i, j;
for(i=0; i<5; i++)
{
for(j=0; j<=i; j++)
{
if(i==j)
{
System.out.print("*");
}
else
{
System.out.print("*");
System.out.print("_");
}
}
System.out.println();
}
添加回答
举报