线程“主”java.lang.StringIndexOutOfBoundsException 中的异常:字符串索引超出范围:7

Posted

技术标签:

【中文标题】线程“主”java.lang.StringIndexOutOfBoundsException 中的异常:字符串索引超出范围:7【英文标题】:Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 7 【发布时间】:2019-03-11 23:06:16 【问题描述】:

我正在尝试打印姓氏字符,但我的代码正在生成异常。

代码:

import java.util.Scanner;

public class LastCharacter 


    public static void main(String[] args) 
        Scanner reader = new Scanner(System.in);
        System.out.println("Type your name: ");
        String name = reader.nextLine();
        char nameLastChar = lastCharacter(name);
        System.out.println("Last character = " + nameLastChar);


    


    public static char lastCharacter(String text)

        int last = text.length();
        char lastChar = text.charAt(last);
        return lastChar;
    



例外:

线程“main”java.lang.StringIndexOutOfBoundsException 中的异常:字符串索引超出范围:7

找不到自己的错误,也看不懂异常信息。

【问题讨论】:

【参考方案1】:

如果字符串长度为 7 个字符,则最后一个索引是 6,而不是 7。记住,索引从 0 开始。

你想要

int last = text.length() - 1; // Adjust the index
char lastChar = text.charAt(last);

【讨论】:

Maaaan 非常感谢 :) 现在我明白异常消息了。祝你有美好的一天,再次感谢:) @Kempa 请成为 corteus 并将此答案标记为正确。

以上是关于线程“主”java.lang.StringIndexOutOfBoundsException 中的异常:字符串索引超出范围:7的主要内容,如果未能解决你的问题,请参考以下文章

Android 异步操作Android 线程切换 ( 判定当前线程是否是主线程 | 子线程中执行主线程方法 | 主线程中执行子线程方法 )

子线程怎么不阻塞主线程

QT中UI主窗口如何与子线程相互传递参数

java 子线程 回调 主线程

C++怎么在主线程中使用子线程的数据? 比如说主线程中有一个数组,如何在子线程中调用这个数组

EventBus事件通信框架 ( 发送事件 | 判断发布线程是否是主线程 | 子线程切换主线程 | 主线程切换子线程 )