黑马程序员技术交流社区

标题: 请帮忙看一下这个程序为什么会产生这样的异常 [打印本页]

作者: 张浮生    时间: 2015-5-14 12:33
标题: 请帮忙看一下这个程序为什么会产生这样的异常
  1. public class Primes {


  2. public static void main(String[] args) {

  3.     int N=Integer.parseInt(args[0]);
  4.     boolean[] a;
  5.     try{
  6.             a=new boolean[N];
  7.     }catch(OutOfMemoryError e){
  8.             System.err.println("Out of Memory");
  9.                     return;
  10.     }
  11.    

  12. for(int i=2;i<N;i++)a[i]=true;

  13. for(int i=2;i<N;i++)
  14. if(a[i]!=false)
  15. for(int j=i;j*i<N;j++)
  16. a[i*j]=false;
  17. for(int i=0;i<N;i++)
  18.    if(a[i])System.out.print(" "+i);
  19. System.out.println();
  20. }

  21. }
复制代码


这是一个求素数的程序,当我输入100000时,
程序产生Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: -2146737495at Primes.main(Primes.java:24)
这样的异常,请问这个程序为什么会产生这样的异常,还有-2146737495这个数是如何产生的,谢谢


作者: BOb_小星    时间: 2015-5-14 13:43
第7行  数组越界了   args[0]    下表0是没有的
作者: 赵旗    时间: 2015-5-14 22:18
报的是数组角标越界异常




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2