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

如何让Java通过Scanner接收换行符并输出对应ASCII值

问题分析与修复方案

错误原因

  • 空指针异常根因:Scanner的findInLine()方法传入的正则.默认不匹配换行符,当输入为单独的换行符时,方法返回null,直接调用charAt(0)就会触发空指针异常。
  • 逻辑判断错误:你写的input.equals("\\n")完全不成立,input是Scanner类的实例对象,不是你读取到的输入内容,二者类型完全不同,永远不会和字符串相等。

修复方案

方案1:基于现有Scanner逻辑修改

调整正则匹配规则,让.可以匹配换行符,不需要额外判断换行,转换为int后自然会得到换行的ASCII值10:

import java.util.Scanner;
import java.util.regex.Pattern;

public class Solution {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        // 开启DOTALL模式,正则.匹配包括换行在内的所有字符
        String matched = input.findInLine(Pattern.compile(".", Pattern.DOTALL));
        char charIn = matched.charAt(0);
        int intVal = (int) charIn;
        System.out.print(intVal);
    }
}

方案2:更简单的单字符ASCII读取方案

如果只需要读取单个字符的ASCII值,不需要用到Scanner的复杂能力,直接用System.in.read()更高效,也不会出现换行适配问题:

public class Solution {
    public static void main(String[] args) throws Exception {
        // 直接读取输入流第一个字节的ASCII数值
        int asciiVal = System.in.read();
        System.out.print(asciiVal);
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 02:09:03