首页 > 解决方案 > kotlin 的 readLine 函数的奇怪行为

问题描述

我正在为一份新工作选择 kotlin,并且正在通过intellij hello world 应用程序为 kotlin 工作

在演练中,您将创建一个控制台应用程序,该应用程序读取标准输入并打印问候语:

fun main(args: Array<String>) {
    println("What's your name?")
    val name = readLine()
    println("Hello, $name")
}

超级简单。

我遇到的问题是,在运行应用程序时,我也收到提示输入我的名字,我输入它,按 Enter,但没有任何反应。该应用程序仍在运行,但它不接受第一次enter按下按钮后的标准输入。

如果我再按回车一两次,它最终会接受输入,但会拉入一个空字符串(如果它将两到三个enter按钮中的每一个都注册为一个新行,这很有意义)。

我可以在此处发布的屏幕截图中无法捕获交互,但我确实记录了正在发生的事情的快速视频:https ://vimeo.com/486636891

我在 readLine 上查找了kotlin 文档,但他们并没有真正让我了解可能发生的事情。

知道这里出了什么问题以及如何解决它吗?最终,我不会用 kotlin 编写很多控制台应用程序,所以这并不重要,但是无法通过语言/工具的第一个 hello-world 应用程序的想法困扰着我。

更新

嗯,一定是在构建jar之前运行源代码。

如果我继续本教程直到我构建 jar 并运行它,文件运行良好:

作为罐子运行

仍然非常令人沮丧的是,如果没有构建它就无法工作。

标签: javakotlinstdin

解决方案


所以在挖掘了一下之后,它似乎是一个 IDE 问题,所以我将它作为一个错误提交给了 JetBrains。

今天早上我收到一封电子邮件,说提交被重复,标记为错误,并分配给某人,所以看起来这个问题是基于 def IDE 的,希望在不久的将来能得到修复。

分配的错误

如果有人想关注进度或查看未来结果,请点击此处的链接。


推荐阅读