首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >StringIndexOutOfBoundsException on List<Character>

StringIndexOutOfBoundsException on List<Character>
EN

Stack Overflow用户
提问于 2014-11-21 17:59:44
回答 4查看 88关注 0票数 0

我试图编写一个将字符串拆分为ArrayList的程序,但我一直在获取java.lang.StringIndexOutOfBoundsException: String index out of range: <length of string>。有人有什么想法吗?(我已经导入了ArrayList和List类)

代码语言:javascript
运行
复制
public static void main(String[] args) 
{
    String test = "Hello, World!";
    int testLength = test.length();
    List<Character> testChars = new ArrayList<Character>();
    for(int i = 1; i <= testLength; i++){
        testChars.add(test.charAt(i)
    }
    System.out.println(testChars);
}
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-11-21 18:00:14

i到达testLength时会发生异常,因为索引从零开始,以字符串减去1的长度结束。

变化

代码语言:javascript
运行
复制
for(int i = 1; i <= testLength; i++){

代码语言:javascript
运行
复制
for(int i = 0; i < testLength; i++){
票数 2
EN

Stack Overflow用户

发布于 2014-11-21 18:00:36

字符串字符的索引从0test.length()-1

因此,循环应该是:

代码语言:javascript
运行
复制
 for(int i = 0; i < testLength; i++){
票数 2
EN

Stack Overflow用户

发布于 2014-11-21 18:02:39

两个答案都是正确的。请记住,Java中的数组(以及字符串)都是零索引的,所以您应该从0开始,否则就会丢失第一个元素。当数组从0开始时,应该是testLength - 1。

如果testLength是10,那么.9是10,所以应该循环0到9。

代码语言:javascript
运行
复制
 for(int i = 0; i <= testLength -1; i++)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27067498

复制
相关文章

相似问题

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