DAY9 Kotlin 基础 Repeat语法

上一篇我们为挚友用kotlin写出了生日祝福:

fun main(){
    var age = 38 
    println("挚友生日快乐!")
    println("你应该${age}了")
    println("${age}是最适合庆祝的年纪")
//最後再送挚友一个生日蛋糕
    println("   ,,,,,   ")
    println("   |||||   ")
    println(" =========")
    println("@@@@@@@@@@@")
    println("{~@~@~@~@~}")
    println("@@@@@@@@@@@")
//暖
//挚友临表涕泣不知所云
}

那我们稍微修改一下,将挚友换成名字,顺便增加一点东西:

fun main(){
    var age : Int = 38 
    var name : String = "Steven"
    println("${name}生日快乐!")
    println("你应该${age}了")
    println("${age}是最适合庆祝的年纪")
//最後再送挚友一个生日蛋糕
    println("   ,,,,,   ")
    println("   |||||   ")
    println(" =========")
    println("@@@@@@@@@@@")
    println("{~@~@~@~@~}")
    println("@@@@@@@@@@@")
//暖
//挚友临表涕泣不知所云
}

我们在age跟name後面分别增加了它们的型态(type),目的是让电脑知道这个变数代表的是甚麽,减少debug的时间。但是电脑也会应後面的资料内容来判断,这个变数应该是甚麽型态,又称型别注记。

用repeat语句绘制贺卡外观

我们可以用最简单最直接的方法来帮贺卡画出外框,就是直接print出来 (我在高中程序课常常就是用print去完成作业==),程序如下:

fun main() {
    println("=======================")
    println("Happy Birthday, Steven")
    println("=======================")
}

但是光是上面一条外框,你就要重复按23次的等号,这样麻烦的事情我们都会直接交给程序来处理,就可以运用到repeat语句:

repeat(23){
    print("=")
}

repeat(n){...}是一种语句,意思是重复大括号的内容n次。

上面的程序码代表着:重复print("=")这个程序23次。那这边给这个程序一个名字:

fun printBorder(){
    repeat(23){
        print("=")
    }
    println()
}

把这个动作取名为printBorder涵式,我在他重复23次之後换行。接下来我们就可以将main的程序码稍微修改下,在main里面去呼叫printBorder涵式:

fun main() {
    printBorder()
    println("Happy Birthday, Steven")
    printBorder()
}

fun printBorder(){
    repeat(23){
        print("=")
    }
    println()
}

把两个涵式写在一起,它们才互相找的到对方喔。输出会长这样子:

https://ithelp.ithome.com.tw/upload/images/20210924/20140638bmsFDE50ex.png


突然有天属猴的挚友跟你说他不太喜欢"=",因为没有相交。他比较喜欢热闹的掌声"%",这时候你可以直接在printBorder里去修改符号,也可以特地宣告一个变数去放符号,这样就不需要进到程序底层修改。

fun main() {
    var border:String ="%"
    printBorder(border)                   //这边将上面宣告的符号作为参数,传到printBorder的涵式里
    println("Happy Birthday, Steven")
    printBorder(border)
}

fun printBorder(border:String){    //这边的border是在这边预设会有一个String的参数会传进来。
    repeat(23){
        print(border)
    }
    println()
}

输出结果:

https://ithelp.ithome.com.tw/upload/images/20210924/20140638NF0X1gYIII.png

同理你也可以运用在符号的数量上:

fun main() {
    var border:String ="%"
    var timesToRepeat:Int = 28
    printBorder(border,timesToRepeat)  //把border跟timesToRepeat传到下面的printBorder涵式
    println("Happy Birthday, Steven")
    printBorder(border,timesToRepeat)
}

fun printBorder(border:String,timesToRepeat:Int){
    repeat(timesToRepeat){
        print(border)
    }
    println()
}

输出结果:

https://ithelp.ithome.com.tw/upload/images/20210924/20140638hmQ55g4sYC.png

如此你只知道要改符号跟符号数量的时候,就可以修改变数的资料内容就可以了,不用进到程序逻辑里,这样可以减少bug的出现,对於程序的易读性也会提高。

最後,有兴趣的朋友可以运用repeat去绘制出生日蛋糕,上面会有与年纪相符数量的蜡烛,给个提示就是,使用fun把蛋糕跟蜡烛拆开来绘制,大概就是会长这样:

https://ithelp.ithome.com.tw/upload/images/20210924/201406389WeM4GQu5D.png

如果没有办法的话,就google吧!上网搜寻资料也是工程师必要的技能呢。

下一篇见写写打家打家摆掰。


<<:  Day 9— 物品借用纪录系统 (1) 基础建构

>>:  IOS、Python自学心得30天 Day-21 CoreML范例

容器化基本概念

容器映像(container image)是开发人员创建并注册的程序包(package),包含在容...

Day30-还想学更多吗?推荐 Youtube 上面免费的 React 学习资源

终於铁人赛也到了尾声,在这三十天为了完成技术文章,查询了不少的资料当作参考,其中也包括了在 yout...

[Day19] swift & kotlin 游戏篇!(1) 小鸡BB-游戏制作-按钮排版

游戏説明 接下来我们要来制作真正的游戏了 游戏就是猜 左右两只小鸡谁先破蛋 然後落入蓝色还是红色蓝子...

找资安工作,怎麽找?要学甚麽?该何去何从?

今天刚好进入铁人赛的一半了, 累,真滴累。虽然单纯看文章,是看不出甚麽端倪, 内容都不是很多,可是都...

GitHub Actions 基本介绍 - 开始自动化 workflow 的第一步

使用 GitHub Actions 可以让 GitHub Repo 内自订且自动执行你的软件开发流程...