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日