一、用Java实现有趣代码—输入对应奇数打印相应的菱形
输入3:
输入 9:
1、具体代码如下
import java.util.Scanner;
class test {
//static float t;
public static void main(String[] args){
int i=0;
int j=0;
int m=0;
Scanner sc=new Scanner(System.in);
int num=sc.nextInt();
if(num%2==0){
System.out.println("请输入奇数");
}
//上三角
for(i=0;i<num;i+=2){
for(m=0;m<num-i-1;m+=2){
System.out.print(" ");
}
for(j=0;j<i+1;j++) {
System.out.print("*");
}
System.out.print("\n");
}
//下三角
for(i=num;i>1;i-=2){
for(m=num;m>i-1;m-=2){
System.out.print(" ");
}
for(j=0;j<i-2;j++){
System.out.print("*");
}
System.out.print("\n");
}
}
}
2、步骤(只讲将大概思路)
- 准备工作:先想,要打印一个完整的菱形那么首先要打印两个正三角形,分别是上三角和下三角,要打印正三角形,需要定义4个变量,
i、j、m、
还有一个用于接收奇数的变量num
。 - 构造上正三角:
- 首先我用到了for循环,最外层的for循环用于确立层数,num == 1—>一层,num == 3–>对应两层,num == 5—>对应3层。,好for循环就这么写
for(i=0;i<num;i+=2)
- 当把三角层数搞好后,再来搞三角每层对应的图案个数,这里也要用到for循环,在每层的这个for循环里写一个for用来打印每层的个数,
num == 3的第1层--->1个图案,num == 3第二层--->3个图案
for(j=0;j<i+1;j++) 。- 这时代码如图
- 效果如图
- 三角形是做好了,但怎么把它变成正三角呢?这时就需要在打印一个空格
*
构成的三角顶成正三角,因此需要在for(i=0;i<num;i+=2)
里,for(j=0;j<i+1;j++)
上,再写一个for循环。 - 当num == 3 —>第一层打印一个空格,第二层不打印空格,当num == 5—>第一层打印两个空格,第二层打印一个空格,
for(m=0;m<num-i-1;m+=2)
- 将空格的for放在打印图形的for上套在层的for里就可以打印出上三角了。
- 首先我用到了for循环,最外层的for循环用于确立层数,num == 1—>一层,num == 3–>对应两层,num == 5—>对应3层。,好for循环就这么写
- 构造下三角也一样,这里就不在缀述了,本题主要分享思路,具体for循环逻辑还需自己分析。