日期:2014-05-20  浏览次数:20943 次

java运行出错
public class Primes {

public static void main(String[] args) {   
        int N = Integer.parseInt(args[0]);   
        boolean [] a = new boolean[N];   
        for(int i = 2; i < N ; i++){   
            a[i] = true;   
        }   
        for(int i = 2; i < N ; i++){   
            if(a[i] != false){   
                for(int j = i; j * i < N; j++){   
                    a[i * j] = false;   
                }   
            }   
        }   
        for(int i = 2; i < N ; i++){   
            if(i > N - 100){   
                if(a [i]){   
                    System.out.println(" " + i);   
                }   
            }   
           
        }  
        System.out.println("辅导费 ");
    }   
  

}
这是错误信息:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
at a.Primes.main(Primes.java:6)

------最佳解决方案--------------------
引用:
引用:
数组越界错误,可能你在控制台输入的值<2,但是你循环都是从2开始的,就可能报错我这是一运行就出错了,都还没有输入数字

照你这个程序的写法,是在运行时带参数运行的,并不是运行之后才输入数值,所以,你如果一开始运行程序的时候没带参数运行,那int N = Integer.parseInt(args[0]);这句话克宁报数组越界错误,因为一个参数都没有,你却去取第一个参数
------其他解决方案--------------------
 System.out.println("辅导费 ");
这句话是不存在的,这是我多谢上去的
------其他解决方案--------------------
数组越界错误,可能你在控制台输入的值<2,但是你循环都是从2开始的,就可能报错

------其他解决方案--------------------
引用:
数组越界错误,可能你在控制台输入的值<2,但是你循环都是从2开始的,就可能报错
我这是一运行就出错了,都还没有输入数字
------其他解决方案--------------------
看下你N的值是多少,小于2的话 那就越界了
------其他解决方案--------------------