我在尝试打印数组时遇到错误。虽然我得到了:
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();
}
}
有没有办法正确地做到这一点?
答案 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异常意味着您尝试访问阵列中不存在的对象。