【问题标题】:IntelliJ IDEA: Why is readLine() expecting two user inputs instead of one using Kotlin?IntelliJ IDEA:为什么 readLine() 需要两个用户输入而不是一个使用 Kotlin 的输入?
【发布时间】:2020-12-13 22:05:18
【问题描述】:

我编写了一个简单的程序,它从控制台获取用户的输入,然后将其打印出来。但是当用户输入输入时,它会请求第二个用户输入并且只读取第二个输入。

代码:

fun main(args: Array<String>) {
    print("Enter text: ")
    val stringInput = readLine()!!
    println("Readed text: $stringInput")
}

控制台:

> Task :MainKt.main()
Enter text: FirstInput
SecondInput
Disconnected from the target VM, address: 'localhost:37282', transport: 'socket'
Connected to the target VM, address: '127.0.0.1:37264', transport: 'socket'
Readed text: SecondInput

我正在使用最新版本的 IntelliJ IDEA。我不知道为什么会这样。我正在使用 Windows。

【问题讨论】:

    标签: kotlin intellij-idea


    【解决方案1】:

    这似乎是 IntelliJ 内部控制台中的一个错误:请参阅 this ticket(通过 this answer 找到)。

    (同样的问题似乎也出现在this questionthis question之后。)

    我不知道是不是同一个问题,但this answer 建议更改编辑配置菜单中的 JRE 选项,然后再改回来。

    【讨论】:

    • 更改 JRE 选项后,它按预期工作。谢谢!
    【解决方案2】:

    在我的例子中,它是一个使用 Gradle 创建的项目。 我在创建项目时将构建系统选项更改为IntelliJ,问题解决了。

    【讨论】:

      【解决方案3】:

      这可能是因为您使用的是“!!”。双 bang (!!) 或双感叹号运算符或非空断言运算符与您确定该值将始终被断言(非空)的变量一起使用。如果一个值为空并且一个使用“!!”,将抛出一个空指针异常。所以,这个操作符只在我们想在找到任何空值时总是抛出一个异常时使用。

      在你的情况下:

      fun main(args: Array<String>) {
          print("Enter text: ")
      
          val stringInput = readLine()
          println("Readed text: $stringInput")
      }
      

      你会想要使用 !!例如:

      fun main(args: Array) {
         println("Enter text: ")
         val stringInput = null
      
         val inputLength = stringInput!!.length
      
         println("Length of the string is : $inputLength")
      
      }
      

      由于用户输入为空,字符串长度为空,因此程序会抛出一个 kotlin.KotlinNullPointerException

      【讨论】:

      • 请解释为什么!!有问题
      • 即使没有!!,问题仍然存在
      • @Lizzie 目前我能想到以下几种可能: - 你是否错误地声明了 2 个 public static void main 方法? - 检查你是否点击了“静音断点”按钮 - 尝试 maven clean 和 maven install
      • @Lizzie 再次单击调试,在右上角,您应该会看到一个工具栏。有一个图标,看起来像两个重叠的红色断点。点击那个。它会在任何异常下弹出一个菜单。请确保已启用、暂停、全部、条件、到控制台的日志消息和日志评估表达式都被选中。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-11-23
      • 1970-01-01
      • 1970-01-01
      • 2021-12-27
      • 1970-01-01
      • 2022-01-22
      • 1970-01-01
      相关资源
      最近更新 更多