首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java - String索引超出范围的异常: 11

Java - String索引超出范围的异常: 11
EN

Stack Overflow用户
提问于 2014-02-16 17:55:13
回答 3查看 3.3K关注 0票数 0

我正在编写一个简单的程序,以获得姓氏的第一个首字母。

input: Bruce Lee

output: L

以下是代码:

代码语言:javascript
复制
public char getFirstInitial()
    {
        char initial;
        int num = this.getFullName().length();

        while (this.getFullName().charAt(num) != ' ')  //this is line 120
        {
                num--;
        }
        initial = this.getFullName().charAt(num + 1);

        return initial;
    }


public String getFullName()
    {
        return fullName;
    }

我得到了一个错误:

代码语言:javascript
复制
java.lang.StringIndexOutOfBoundsException: String index out of range: 11
    at java.lang.String.charAt(Unknown Source)
    at lab1.Person.getFirstInitial(Person.java:120)

我不明白问题出在哪里。谢谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-02-16 17:56:46

不要忘记索引是基于0的。因此,第一个元素位于索引0,最后一个元素位于伦特-1。

如果指定的名称无效,还可以在该循环中检查索引是否为>= 0。

票数 2
EN

Stack Overflow用户

发布于 2014-02-16 18:00:12

变化

代码语言:javascript
复制
int num = this.getFullName().length();

代码语言:javascript
复制
int num = this.getFullName().length() - 1;

作为索引,从0开始,一直到string.length()-1。

票数 1
EN

Stack Overflow用户

发布于 2014-02-16 18:01:05

name.charAt(num)将抛出异常bcoz索引,它将比总长度少1。

更新代码

代码语言:javascript
复制
while (name.charAt(num-1) != ' ')  //this is line 120
        {
                num--;
        }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21815102

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档