在屏幕上用*输出n行金字塔图案
老师说用二重循环,我刚学不会,请高人搭救(用java)
------解决方案--------------------给你一个代码吧;你自己参考一下;
public class Jinzita {
/**
* 输出金字塔
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
//金字塔的阶梯行数
int line=30;
//每个阶梯的砖
int num=1;
//i控制行数
for(int i=1;i<=line;i++){
//j循环控制打印空格;
for(int j=0;j<line-i;j++){
System.out.print(" ");
}
//k循环控制打印*
for(int k=0;k<num;k++)
{
System.out.print("*");
}
//换行
System.out.print("\n");
num+=2;
}
}
}
------解决方案--------------------
//递归么
public static void main(String[] args) {
sf(5);
}
static void sf(int i) {
sf(i,1);
}
static void sf(int i,int k){
if(k>i)return;
printfB(" ",i-k);
printfB("*",k*2-1);
System.out.println("");
sf(i,k+1);
}
static void printfB(String k, int i) {
if (i < 1) {
return;
}
System.out.print(k);
printfB(k, i - 1);
}
//这个更短一点
static void sf(int i) {
for (int j = 0; j < i; j++) {
String str = String.format("%" + (i - j) + "s%0" + (j * 2 + 1) + "d", " ", 0);
System.out.println(str.replaceAll("0", "*"));