显示金字塔:
提示用户输入一个在1到15之间的整数,然后显示一个金字塔形状的图案。
第一步:确定最外层循环-行数i:0 1 2 3 4 5 6 7
第二步:找出打印空格的规律k:7 6 5 4 3 2 1 0 i+k=7
第三步:找出要打印数字的规律:|i-1|
/*分析:
1.首先i表示行数;k表示空格数;拿第5行举例:当i等于5是:
要打印: 4 3 2 1 2 3 4 也就是打印|x-1| -3<=x<=3
i k
1 6 1
2 5 2 1 2 |x-1| 4 3 2 1 2 3 4
3 4 3 2 1 2 3 x-1 -4 -3 -2 -1 2 3 4
4 3 4 3 2 1 2 3 4 x -3 -2 -1 0 1 2 3
5 2 5 4 3 2 1 2 3 4 5
6 1 6 5 4 3 2 1 2 3 4 5 6 x(-3,3)
7 0 7 6 5 4 3 2 1 2 3 4 5 6 7 */
import java.util.Scanner;
class Text14{
public static void main(String[] args){
System.out.print("Enter the number of lines:"); //提醒用户输入信息
Scanner scanner = new Scanner(System.in);
int p = scanner.nextInt(); //输入一个1到15之间的数字
for(int i=1;i<=p;i++){ //最外层循环-表示行数
for(int k=1;k<=p-i;k++){ //内层循环-表示空格数
System.out.print(" "); //打印空格
}
for(int x=-(i-1);x<=(i-1);x++){ //与空格数的循环并列-表示要打印的数字
System.out.printf("%4d",Math.abs(x)+1); //打印数字
}
System.out.println(); //换行
}
}
}
运行结果:
使用for循环打印四个图案:
图案1:
第一步:确定外层for循环:行数 1 2 3 4 5 6
第二步:确定内层循环:找出打印的数字的规律 从1到i (1~i)
class Text15_01{
public static void main(String[] args){
for(int i=1;i<=6;i++){ //外层循环控制行数
for(int j=1;j<=i;j++){ //内层循环控制打印内容
System.out.print(j+" "); //打印的内容
}
System.out.println(); //换行
}
}
}
图案2:
/*
i 表示行数,j表示每行打印数字的最大值
i j
1 2 3 4 5 6 6 6
1 2 3 4 5 5 5
1 2 3 4 4 4
1 2 3 3 3
1 2 2 2
1 1 1
外层循环:1.循环初始化:i=6
2.循环继续条件:i>=1
3.循环体:整个内层循环
4.循环的周期,步长,间距:i--
内层循环:1.循环初始化:j=1
2.循环继续条件:j<=i
3.循环体:System.out.print(j+" ");
4.循环的周期,步长,间距:j++
*/
class Text15_02{
public static void main(String[] args){
for(int i=6;i>=1;i--){
for(int j=1;j<=i;j++){
System.out.print(j+" ");
}
System.out.println();
}
}
}
图案三:
/*
i表示行数;k表示打印的空格数;j表示打印数字的最大值
i k j i+k=6
1 1 5 1
2 1 2 4 2
3 2 1 3 3 3
4 3 2 1 4 2 4
5 4 3 2 1 5 1 5
6 5 4 3 2 1 6 0 6
外层循环:1.循环初始化:i=1
2.循环继续条件:i<=6
3.循环体:整个内层循环
4.循环的周期,步长,间距:i++
内层循环1:1.循环初始化:k=1
2.循环继续条件:i<=6-i
3.循环体:System.out.print(" ");
4.循环的周期,步长,间距:i++
内层循环2:1.循环初始化:j=1
2.循环继续条件:j>=1
3.循环体:System.out.print(j+" ");
4.循环的周期,步长,间距:j--
*/
class Text15_03{
public static void main(String[] args){
for(int i=1;i<=6;i++){ //外层循环-控制行数
for(int k=1;k<=6-i;k++){ //内层循环1-控制打印的空格数
System.out.print(" "); //打印空格
}
for(int j=i;j>=1;j--){ //内层循环2-控制打印的数字
System.out.print(j+" "); //打印数字
}
System.out.println(); //换行
}
}
}
图案四:
/*
i表示行数;j表示打印的空格数; k表示打印数字的最大值
i j k
1 2 3 4 5 6 1 0 6
1 2 3 4 5 2 1 5
1 2 3 4 3 2 4
1 2 3 4 3 3
1 2 5 4 2
1 6 5 1
*/
class Text15_04{
public static void main(String[] args){
for(int i=6;i>=1;i--){ //外层循环-控制行数
for(int j=6-i;j>=1;j--){ //内层循环1-控制打印空格数
System.out.print(" "); //打印空格
}
for(int k=1;k<=i;k++){ //内层循环2-控制的打印的数字
System.out.print(k+" "); //打印数字
}
System.out.println(); //换行
}
}
}
图案五:
/*
2^0
2^0 2^1 2^0
2^0 2^1 2^2 2^1 2^0
2^0 2^1 2^2 2^3 2^2 2^1 2^1
2^0 2^1 2^2 2^3 2^4 2^3 2^2 2^1 2^0
2^0 2^1 2^2 2^3 2^4 2^5 2^4 2^3 2^2 2^1 2^0 i x
1 1 8
1 2 1 2 7
1 2 4 2 1 3 6
1 2 4 8 4 2 1 4 5
1 2 4 8 16 8 4 2 1 5 4
1 2 4 8 16 32 16 8 4 2 1 6 3
1 2 4 8 16 32 64 32 16 8 4 2 1 7 2
1 2 4 8 16 32 64 128 64 32 16 8 4 2 1 8 1
y 0 1 2 3 4 3 2 1 0 i=5
x -4 -3 -2 -1 0 1 2 3 4 x=-y+4 x(-(i-1),i-1)
-y 0 -1 -2 -3 -4 -3 -2 -1 0 |x|=-y+n n=i-1 y=i-1-|x|
-y+4 4 3 2 1 0 1 2 3 4 要打印的是2^y
*/
class Text16_01{
public static void main(String[] args){
int a;
for(int i=1;i<=8;i++){ //外层循环-控制行数
for(int s=8-i;s>0;s--){ //内层循环1-控制打印空格数
System.out.print(" "); //打印空格
}
for(int j=-(i-1);j<=i-1;j++){ //内层循环2-控制打印的数字
System.out.printf("%4d",a=(int)(Math.pow(2,i-1-Math.abs(j))));
} //打印数字2^(i-1-|x|)
System.out.println(); //换行
}
}
}