2302_81045186 2024-06-19 09:37 采纳率: 0%
浏览 9

kotlin撰写唐诗三百首

随机输入一个诗人的名字,显示出来他的诗词,代码的结构都有什么

  • 写回答

1条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-06-19 09:37
    关注

    引自免费微信小程序:皆我百晓生

    要实现一个Kotlin程序,能够根据输入的诗人名字随机显示其一首诗词,首先需要一个包含唐诗三百首数据集。由于直接提供整个数据集超出范围,这里将展示如何设计这样的程序,并提供一个简化的示例。

    步骤 1: 创建数据模型

    定义一个数据类来存储诗词信息,包括诗人名、诗题和诗文。

    data class Poem(val poet: String, val title: String, val content: List<String>)
    

    步骤 2: 构建数据源

    创建一个列表来存储一些示例诗词。在实际应用中,这可能来自一个文件或数据库。

    val poems = listOf(
        Poem("李白", "静夜思", listOf("床前明月光", "疑是地上霜", "举头望明月", "低头思故乡")),
        Poem("杜甫", "春望", listOf("国破山河在", "城春草木深", "感时花溅泪", "恨别鸟惊心"))
    )
    

    步骤 3: 实现查询功能

    编写函数来查找并随机返回指定诗人的诗词。

    import kotlin.random.Random
    
    fun getRandomPoemByPoet(poetName: String): Poem? {
        val poetPoems = poems.filter { it.poet == poetName }
        return if (poetPoems.isEmpty()) null else poetPoems[Random.nextInt(poetPoems.size)]
    }
    

    步骤 4: 用户交互

    创建一个简单的命令行界面,让用户输入诗人名字并显示结果。

    fun main() {
        println("请输入诗人名字:")
        val scanner = Scanner(System.`in`)
        val poetName = scanner.nextLine()
    
        val poem = getRandomPoemByPoet(poetName)
    
        when (poem) {
            null -> println("未找到该诗人的诗词。")
            else -> {
                println("标题: ${poem.title}")
                println("内容:")
                poem.content.forEachIndexed { index, line -> println("${index + 1}. $line") }
            }
        }
    }
    

    完整代码

    将以上所有片段组合在一起,得到完整的程序:

    import kotlin.random.Random
    
    data class Poem(val poet: String, val title: String, val content: List<String>)
    
    val poems = listOf(
        Poem("李白", "静夜思", listOf("床前明月光", "疑是地上霜", "举头望明月", "低头思故乡")),
        Poem("杜甫", "春望", listOf("国破山河在", "城春草木深", "感时花溅泪", "恨别鸟惊心"))
    )
    
    fun getRandomPoemByPoet(poetName: String): Poem? {
        val poetPoems = poems.filter { it.poet == poetName }
        return if (poetPoems.isEmpty()) null else poetPoems[Random.nextInt(poetPoems.size)]
    }
    
    fun main() {
        println("请输入诗人名字:")
        val scanner = Scanner(System.`in`)
        val poetName = scanner.nextLine()
    
        val poem = getRandomPoemByPoet(poetName)
    
        when (poem) {
            null -> println("未找到该诗人的诗词。")
            else -> {
                println("标题: ${poem.title}")
                println("内容:")
                poem.content.forEachIndexed { index, line -> println("${index + 1}. $line") }
            }
        }
    }
    

    这个程序可以作为起点,进一步扩展功能,比如读取更多的诗词数据,或者改进用户界面。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 6月19日

悬赏问题

  • ¥15 如何在vue.config.js中读取到public文件夹下window.APP_CONFIG.API_BASE_URL的值
  • ¥50 浦育平台scratch图形化编程
  • ¥20 求这个的原理图 只要原理图
  • ¥15 vue2项目中,如何配置环境,可以在打完包之后修改请求的服务器地址
  • ¥20 微信的店铺小程序如何修改背景图
  • ¥15 UE5.1局部变量对蓝图不可见
  • ¥15 一共有五道问题关于整数幂的运算还有房间号码 还有网络密码的解答?(语言-python)
  • ¥20 sentry如何捕获上传Android ndk 崩溃
  • ¥15 在做logistic回归模型限制性立方条图时候,不能出完整图的困难
  • ¥15 G0系列单片机HAL库中景园gc9307液晶驱动芯片无法使用硬件SPI+DMA驱动,如何解决?