You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kotlin如何获取Int、Float等数值类型用户输入,替代仅返回String的readLine()方法

Kotlin 控制台读取数值类型输入的实现方案

你给出的示例代码报错有三个原因:

println"Enter your age"
var age:int =readInt()
  1. println方法的参数缺少包裹用的括号
  2. Kotlin的整型类型名为Int,首字母必须大写
  3. Kotlin标准库没有提供全局默认的readInt()顶层方法,readLine()默认返回的确实是可空String类型,需要手动做类型转换。

以下是两种常用的实现方案:

方案1:基于readLine()封装自定义工具方法

这是最推荐的Kotlin原生实现方式,可以根据需求自定义异常处理、重试逻辑:

// 读取Int输入,输入不合法时返回null
fun readInt(): Int? = readLine()?.toIntOrNull()
// 读取Float输入,输入不合法时返回null
fun readFloat(): Float? = readLine()?.toFloatOrNull()
// 读取Double输入,输入不合法时返回null
fun readDouble(): Double? = readLine()?.toDoubleOrNull()

// 可选:封装带重试逻辑的方法,直到用户输入合法数值为止
fun readIntWithRetry(prompt: String): Int {
    while (true) {
        println(prompt)
        readLine()?.toIntOrNull()?.let { return it }
        println("输入不合法,请输入有效整数")
    }
}

使用示例:

fun main() {
    // 基础用法
    println("请输入你的年龄:")
    val age = readInt()
    age?.let { println("你的年龄为$it 岁") } ?: println("年龄输入无效")

    // 带重试的用法
    val score = readIntWithRetry("请输入考试分数:")
    println("你输入的分数为$score")
}

方案2:调用Java的Scanner类实现

如果习惯Java的API用法,也可以直接用Scanner类读取数值:

import java.util.Scanner

fun main() {
    val scanner = Scanner(System.`in`)
    println("请输入你的年龄:")
    val age: Int = scanner.nextInt()
    println("请输入你的身高(单位:米):")
    val height: Float = scanner.nextFloat()
    println("年龄:$age,身高:$height 米")
}

注意:使用Scanner的数值读取方法时,如果输入和目标类型不匹配,会抛出InputMismatchException,建议搭配try-catch做异常捕获,避免程序直接崩溃

内容的提问来源于stack exchange,提问作者Kareem Mohamed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 10:21:03