public class OutputRhombus { public static void main(String[] args) { int i, j, n = 9; if (0 == n % 2)// 只能为奇数 n = n - 1; for (i = 1; i <= n / 2 + 1; i++) {// 前半部分的每一行 for (j = 0; j <= n / 2 - i; j++) // 离边框距离 System.out.print(" "); for (j = 1; j <= i * 2 - 1; j++) // 每行打印几个* System.out.print("*"); System.out.println();// 每行打印完成,就回车换行 } for (i = 0; i < n / 2; i++) { for (j = 0; j <= i; j++) System.out.print(" "); for (j = 0; j < n - 2 * (i + 1); j++) System.out.print("*"); System.out.println(); } } } /*output: * *** ***** ******* ********* ******* ***** *** * */
我们公司的面试题目,两个循环实现,据说还不是最好的,说是可以一个循环实现?!有研究的大侠可以跟帖。 int startCount = 1;//第一行星号个数 int lineStep = 2;//每行星号步进数 int maxCount = 9;//中段星号最大值
int a = startCount - lineStep;
for (int i = maxCount / 2 * -1; i <= maxCount / 2; i++) { if (i <= 0) { a += lineStep; } else { a -= lineStep; } int m = Math.abs(i) + a; for (int k = 1; k <= m; k++) { if (k <= Math.abs(i)) { System.out.print(" "); } else { System.out.print("*"); } } System.out.println(); }
public class OutputRhombus {
public static void main(String[] args) {
int i, j, n = 9;
if (0 == n % 2)// 只能为奇数
n = n - 1;
for (i = 1; i <= n / 2 + 1; i++) {// 前半部分的每一行
for (j = 0; j <= n / 2 - i; j++)
// 离边框距离
System.out.print(" ");
for (j = 1; j <= i * 2 - 1; j++)
// 每行打印几个*
System.out.print("*");
System.out.println();// 每行打印完成,就回车换行
}
for (i = 0; i < n / 2; i++) {
for (j = 0; j <= i; j++)
System.out.print(" ");
for (j = 0; j < n - 2 * (i + 1); j++)
System.out.print("*");
System.out.println();
} }
}
/*output:
*
***
*****
*******
*********
*******
*****
***
* */
int lineStep = 2;//每行星号步进数
int maxCount = 9;//中段星号最大值
int a = startCount - lineStep;
for (int i = maxCount / 2 * -1; i <= maxCount / 2; i++) {
if (i <= 0) {
a += lineStep;
} else {
a -= lineStep;
} int m = Math.abs(i) + a;
for (int k = 1; k <= m; k++) {
if (k <= Math.abs(i)) {
System.out.print(" ");
} else {
System.out.print("*");
}
}
System.out.println();
}