繁体   English   中英

Java-超出范围的字符串索引异常:11

[英]Java - String Index Out of Bounds Exception : 11

我正在编写一个简单的程序来获取姓氏的名字的首字母。

input: Bruce Lee
output: L

这是代码:

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;
    }

我收到此错误:

java.lang.StringIndexOutOfBoundsException: String index out of range: 11
    at java.lang.String.charAt(Unknown Source)
    at lab1.Person.getFirstInitial(Person.java:120)

我不明白问题是什么。 谢谢

不要忘记索引从0开始。 所以第一个元素在索引0处,最后一个在长度-1处

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

更改

int num = this.getFullName().length();

int num = this.getFullName().length() - 1;

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

name.charAt(num)将抛出异常,bcoz索引将比全长减1。

更新代码

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

在Java中,当您对字符串执行索引明智的操作时,总是会出现问题,因此首先应将stricng转换为字符数组,然后再执行操作,如上文所述,如果您使用length()-1而不是length()那么数组越界错误将被删除。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM