随机输入一个诗人的名字,显示出来他的诗词,代码的结构都有什么
1条回答 默认 最新
关注 引自免费微信小程序:皆我百晓生
要实现一个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") } } } }
这个程序可以作为起点,进一步扩展功能,比如读取更多的诗词数据,或者改进用户界面。
解决 无用评论 打赏 举报 编辑记录
悬赏问题
- ¥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驱动,如何解决?