将字符串拆分为数组然后循环遍历时获取ArrayIndexOutOfboundsException

时间:2012-03-30 14:47:18

标签: java

我正在尝试将split()函数的结果发送到字符串数组中,但我得到如下异常:

  

java.lang.ArrayIndexOutOfBoundsException:somenumber

我使用以下代码,但它返回该异常:

String[] temp;
temp = result.split(" ");

有什么建议吗?我想将字符串split()函数的结果发送到字符串数组中,然后在for循环中打印值。

我在for循环中遇到一个超出范围的异常,我使用:

for (int i=0;i<=temp.length;i++)
{
    out.println(temp[i]);
}

5 个答案:

答案 0 :(得分:3)

String temp;
String[] split = result.split(" ");
temp = split[temp.length - 1];

您将String数组声明为单个字符串,然后以错误的方式声明新的String。

编辑:看到你更新了帖子:

你必须使用少于for循环中的条件。如果一个数组有5个元素,那么最后一个元素将是4,而不是5.正确的代码是:

for(int i = 0; i < temp.length; i++){
  System.out.println(temp[i]);
}

你甚至可以这样做:

for(String cur : temp){
  System.out.println(cur);
}

答案 1 :(得分:0)

split()方法(doc)会返回一个字符串数组,因此您的temp变量应为String[]

答案 2 :(得分:0)

您的代码无法正常运行。 split会返回String[]

String someString = "hello world";
String[] split = someString.split(" ");
String hello = split[0];
String world = split[1];
String lastWord = split[split.length-1];

答案 3 :(得分:0)

此?

String[] parts = original.split(" ");

答案 4 :(得分:0)

如果要将结果(数组的长度?)存储在生成split()函数的同一数组中,则不能。您将不得不创建另一个更长的数组:

String result = "Hello World";
String[] temp;
temp = result.split(" ");
String[] temp2 = Arrays.copyOf(temp, temp.length + 1);
temp2[temp.length] = String.valueOf(temp.length);
System.out.println(Arrays.toString(temp2));

输出为:[Hello,World,2]