Java - 打印拆分字符串的几个不同部分

时间:2014-03-06 21:10:46

标签: java while-loop arrays

我在尝试打印数组时遇到错误。虽然我得到了:

     Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
              at FlipProj.main(FlipProj.java:20)

错误讯息。

我的代码:

import java.util.Scanner;


public class FlipProj 
{
    public static void main(String args[])
    {
        Scanner s = new Scanner(System.in);

        System.out.println("Innput an equation:");
        String e = s.next();

        String split[] = e.split("-");

        int count = 0;

        while (split.length > count)
        {
                count++;
                System.out.println("Splt: " + split[count]);
        }

        s.close();
    }
}

有没有办法正确地做到这一点?

2 个答案:

答案 0 :(得分:1)

你过早递增,这应该有效:

while (split.length > count) {
    System.out.println("Splt: " + split[count]);
    count++;
 }

记住数组从0开始编制索引。

要考虑的一些(更清洁的)替代方案:

//using a for loop
for (int i=0; i<split.length; i++) {
    System.out.println("Splt: " + split[i]);
}

//using an enhanced for loop (since Java 5)
for (String str: split) {
    System.out.println("Splt: " + str);
}

您可以找到更多信息here

答案 1 :(得分:0)

当您递增计数变量时,您在从阵列打印之前就这样做了。您需要记住Java数组总是从0开始而不是1.尝试这个:

while (split.length > count){
  System.out.println("Split: " + split[count]);
  count ++;
}

建议您使用for循环,因为它们可以很好地迭代数组。它们也比while循环使用更少的内存。

for (int i = 0; i < split.length; i ++) {
  System.out.println("Split: " + split[i]);
  count ++;
}

此外,ArrayOutOfBounds异常意味着您尝试访问阵列中不存在的对象。