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

如何正确使用System.in.read()获取用户输入的整数值

问题根因
  • System.in.read()的设计逻辑是单次读取输入流中的单个字节,返回值为对应字符的ASCII编码数值:
    1. 第一次输出50的原因:输入"24"时,第一个被读取的字符是'2',其ASCII编码的十进制值就是50,直接输出int类型的返回值就会得到50,剩余的'4'、换行符都还留在输入缓存中未被读取。
    2. 第二次输出2的原因:将读取到的int值强转为char,只是把ASCII码50转成了对应的字符'2',本质还是只读取了第一个输入字符,不会自动读取后续的数字字符,因此只能输出2。
正确实现方案

Java中处理控制台输入优先使用java.util.Scanner工具类,会自动处理多字符输入、类型转换的逻辑,无需手动编码处理:

import java.util.Scanner;

public class AgeInputTest {
    public static void main(String[] args) {
        System.out.println("Hallo " + args[0]);
        System.out.println("Wie alt bist du?");
        // 绑定控制台输入流
        Scanner inputScanner = new Scanner(System.in);
        // 直接读取输入的整数值,自动识别连续数字字符
        int alter = inputScanner.nextInt();
        System.out.println("Du bist " + alter + " Jahre alt.");
        inputScanner.close();
    }
}

如果有读取整行文本的需求,可以调用inputScanner.nextLine()方法,会读取输入的整行内容,自动过滤末尾的换行符。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 23:36:04