打印菱形,用scala怎末实现?

该博客介绍了如何使用Scala编程语言创建一个打印菱形图案的程序。通过分析问题,作者将菱形分为上下两部分,分别实现。上半部分通过循环逐行增加星号,下半部分则递减星号并增加空格以保持对齐。最终,通过控制台输出完成了菱形图案的显示。代码中包含了详细的注释和逻辑解释。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

先来看一个效果图:

这也是接下来我们要使用scala实现的效果,在做之前,一定要分析一下,分析这个怎样来实现,以及用到的方法等。

我们可以看到,这是一个菱形,可分为上下两个部分,上面的“*”号逐行增加,下面的“*”逐行减少,少并代替以空格。

有了以上的分析,我们就可以看出,这其实就是把字符一行一行的输出到控制台上,知道的这个原理,就很简单。

接着分析,从第一行到第十三行是每行从左到右增加一个“*”号,用简单的println()就可以实现,我们完全可以这样写:

println("*")
println("**")
println("***")
println("****")
......

这样子一直写到第十三行就可以实现上半部分。

但是下半部分这样写吗,显然不可以。

怎样解决呢?

我们已经分析过了,下半部分每行的“*”减少的,并以空格代替减少的部分,每行的空格是增加的。那么思路就来了,我们可以把空格和减少的“*”输出在同一行,这样就可以的了。

看代码:

/**
 * @className: lozenge
 * @author: Star
 * @create: 2022-07-17 10:55
 */
object Identifier {
  def main(args: Array[String]): Unit = {
    //上半部分
    var m = 0
    while (m <= 10) {
      m = m + 1
      println("*" * m)
    }
    //下半部分
    //n是每行减少的“*”;d是每行增加的空格
    var n = 11
    var d = -1
    while (n >= 1) {
      n = n - 1
      d = d + 1
      println(" " * (d + 1) + "*" * n)
    }
  }
}

解释下:

之所以 var d = -1 ,d从-1开始,是考虑到和上一行对齐,不是-1也可以,只是不好看而已。

这样子就实现了这样的菱形的打印输出。其实这个方法还可以再优化。当然也有很多的写法,这是其中的一种,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值