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();
}
添加回答
舉報