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

java.lang.StringIndexOutOfBoundsException报错:打印第7个字符失败求助

解决java.lang.StringIndexOutOfBoundsException报错问题

咱们先拆解下你遇到的问题:

为啥会报错?

首先看你的代码和运行命令:
你用了input.next()读取输入,但这个方法只会读取空格前的内容。你运行时输入的是hello world,input.next()只拿到了hello——这个字符串只有5个字符,而你要取索引7的字符,肯定越界了。

另外还有个容易踩的坑:Java里字符串的索引是从0开始计数的,就算你输入了足够长的字符串,“第7个字符”对应的索引应该是6,而不是7,这也是导致报错的潜在原因哦。

怎么修复?

如果你需要读取带空格的整行输入

把input.next()换成input.nextLine(),这样就能获取完整的输入内容,同时记得加长度检查避免越界:

import java.util.Scanner; 
public class s { 
    public static void main(String[] args) { 
        Scanner input = new Scanner(System.in); 
        String string = input.nextLine(); // 读取整行输入,包含空格
        // 先判断字符串长度够不够,再访问索引
        if (string.length() >= 7) {
            System.out.println(string.charAt(6)); // 第7个字符对应索引6
        } else {
            System.out.println("输入的字符串长度不足7个字符哦");
        }
        input.close(); // 记得关闭Scanner
    } 
}

如果你只需要读取单个无空格的单词

那运行时要输入至少7个字符的单词,同时修正索引并加上长度检查:

import java.util.Scanner; 
public class s { 
    public static void main(String[] args) { 
        Scanner input = new Scanner(System.in); 
        String string = input.next(); 
        if (string.length() >= 7) {
            System.out.println(string.charAt(6)); 
        } else {
            System.out.println("输入的单词长度不够7个字符哦");
        }
        input.close();
    } 
}

小提醒

  • 每次访问字符串索引前,一定要先检查字符串的长度,这是避免这类越界异常的好习惯。
  • 牢记Java字符串索引从0开始:第1个字符是索引0,第N个字符就是索引N-1。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:59:24