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

【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日

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!