初学JAVA输出空心菱形行数分析技巧

初学JAVA输出空心菱形行数分析技巧

在开始学习Java语言编程时,需要反复做一些练习题,以巩固所学的知识,以下一个案例,输出空心菱形,使用for循环和If语句实现,其中判断每一行的数量运用数学思想理解起来更容易一些。

package part;
import java.util.Random;
public class cha1 {
    public static void main(String[] args){
        Random rand = new Random()//控制台输出一个随机生成的的10-20之间行数的空心菱形
        final int R = 10+rand.nextInt(11);
        System.out.println("随机生成菱形上半部分行数:"+R);
        for(int i = -R,m;i <= R;i++){
            for(int k = 1;k <= Math.abs(i);k++){
                System.out.print(" ");
            }
            m = 2*R+1-2*Math.abs(i);
            for(int k = 1;k <= m;k++){
                if(R == Math.abs(i) || k == 1 || k == m){
                    System.out.print("*");
                }else{
                    System.out.print(" ");
                }
            }
            System.out.println();
        }
    }
}

输出为:

随机生成菱形上半部分行数:5
     *
    * *
   *   *
  *     *
 *       *
*         *
 *       *
  *     *
   *   *
    * *
     *

大家可以看到,第一个运用函数思想在k <= Math.abs(i),在*前面先输入空格,其中空格个数为连续数,最中间是没有空的,中间一行是顶格的,怎么理解k <= Math.abs(i),更好一些呢,大家可以从数学角度,看成函数,从最中间一行往下理解,数字是1,2,3,4,。。。,正是一次函数y = kx这样一个函数,这样理解就好理解一些,因为上面i是从负的开始,所以符合函数y = k|x|,即k <= Math.abs(i),所以分析函数就从中间一行,往下看,数字变化规律,函数很容易理解的就得出来了。

同样道理,去判断下一个for循环中k的范围,我们看出图形的变化规律是1,3,5,7,9,11,9,7,5,3,1,。。。这样的规律,公差为2的等差数列,k应该小于等于多少呢,同样的方法,看下半部分,从中间往下看,先看中间一行,这是i=6,R等于5,中间数字是11,从中间看往下,越来越小,减函数,y= b-2x,大概形式是这样,根据x=6,y= 11,R=5,所以y=2R+1-2x,即2R+1-2*Math.abs(i),这样理解会更加直观一些。这道题上下图形对称,初值取负,加上绝对值更加简便。希望这样思考能够帮助大家更好理解k后面的值到底取什么。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值