随机输入一个诗人的名字,显示出来他的诗词,代码的结构都有什么
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") } } } }这个程序可以作为起点,进一步扩展功能,比如读取更多的诗词数据,或者改进用户界面。
解决 无用评论 打赏 举报 编辑记录