读书人

在屏幕下用*输出n行金字塔图案

发布时间: 2013-01-02 13:08:44 作者: rapoo

在屏幕上用*输出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;
}
}

}

[解决办法]

引用:
一点思绪都没有,我想到用递归,但是还没学,能给个关键代码吗?

引用:

外层循环负责控制N行,内层循环负责输出空格和星号(根据外层循环层级,配合if)。

这个还是自己尝试写代码吧,不要直接求成品,对你自己没帮助。


//递归么

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", "*"));


}
}


[解决办法]
System.out.println(" *");
System.out.println(" ***");
System.out.println(" *****");
System.out.println(" *******");
System.out.println(" *********");
System.out.println(" ***********");
System.out.println("*************");
[解决办法]
试试这个思路吧

public static void main(String[] args) throws Exception {
int sum=5;
String s=null;
for(int i=1;i<=sum;i++){
for(int j=1,k=0;j<=2*sum-1;j++){
s=" ";
if(j==sum-i+1+k&&k<2*i-1){
s="*";
k++;
}
System.out.print(s);
}
System.out.println();
}
}

读书人网 >J2ME开发

热点推荐