Lemonive 2022-10-11 17:01 采纳率: 100%
浏览 353
已结题

【Android Studio】用Kotlin语言编写模拟 F1 方程式赛车的程序

问题:

程序包含 1 个主函式、1 个 赛车(RacingCar)类、1 个 Mercedes 类、1 个 Ferrari 类、1 个BMW类与1个跑(Run)接口。RacingCar类有位置(position)属性,用来纪录实例目前的位置,Run 接口有跑(go)方法须实现。Mercedes 类、Ferrari 类与 BMW 类须继承 RacingCar类,并实现跑接口。3 类中都有名称(name)属性,用以暂存赛车实例名称,而实例调用跑方法,将改变实例的位置。在主函式中分别创建 3 种赛车的实例,在模拟赛车的循环中,轮流调用实例的 go 方法,用随机数random方法改变赛车实例的位置(每次的位移量不宜过大),3 个实例移动完后,分别打印出各车辆当前的位置,并检查是否有赛车实例已移动超过 200 公里,若有,则该实例获胜,退出模拟赛车循环,打印出获胜车辆的名称,程序结束。

程序运行的过程与结果如下图所示

img

  • 写回答

3条回答 默认 最新

  • 不会写代码的猴子 Android领域优质创作者 2022-10-12 11:10
    关注
    import java.util.*
    
    object Main {
        fun main(args: Array<String>) {
            val mercedes = Mercedes()
            val ferrari = Ferrari()
            val bmw = BMW()
            while (true) {
                mercedes.go(Random().nextInt(10))
                ferrari.go(Random().nextInt(10))
                bmw.go(Random().nextInt(10))
                println(mercedes.name + ":" + mercedes.position)
                println(ferrari.name + ":" + ferrari.position)
                println(bmw.name + ":" + bmw.position)
                if (mercedes.position >= 200) {
                    println("The winner is:" + mercedes.name)
                    break
                }
                if (ferrari.position >= 200) {
                    println("The winner is:" + ferrari.name)
                    break
                }
                if (bmw.position >= 200) {
                    println("The winner is:" + bmw.name)
                    break
                }
            }
        }
    
        internal open class RacingCar {
            var position = 0
        }
    
        internal interface Run {
            fun go(distance: Int)
        }
    
        internal class Mercedes : RacingCar(), Run {
            var name = "Mercedes"
            override fun go(distance: Int) {
                position += distance
            }
        }
    
        internal class Ferrari : RacingCar(), Run {
            var name = "Ferrari"
            override fun go(distance: Int) {
                position += distance
            }
        }
    
        internal class BMW : RacingCar(), Run {
            var name = "BMW"
            override fun go(distance: Int) {
                position += distance
            }
        }
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 10月22日
  • 已采纳回答 10月14日
  • 创建了问题 10月11日

悬赏问题

  • ¥15 unity3d机械臂
  • ¥20 判断两个表是否完全相同
  • ¥20 工控机出现散热器转一下停一下这种情况,是什么原因造成的
  • ¥15 双显卡,启动docker容器报错。
  • ¥15 想编写一个期货跨期套利的程序
  • ¥15 一个线程在sleep的时候set一个信号会起作用吗
  • ¥50 如何利用matlab将现有的地基雷达回波数据调制为机载雷达回波数据
  • ¥100 需求高精度PT100设计电路和算法
  • ¥15 单片机配网,继电器开关,广播
  • ¥60 Qcustomplot绘制实时动态曲线